Galería de WP predeterminada: muestra solo galerías de una determinada categoría

4

Estoy usando la Galería predeterminada de WordPress y agrego categorías a ellos. Ahora he creado un shortcode con un bucle para hacer que las galerías lleguen a una página:

if(! function_exists('test_shortcode')){
function lv_gallery_style_one_shortcode($atts, $content = null){
    extract(shortcode_atts( array(
        'title'=>'',
        ), $atts) );

        $port=array('post_type' => 'gallery', 'category_name' => 'beach', 'showposts' => -1 );
        $loop=new WP_Query($port);
        while ( $loop->have_posts() ) : $loop->the_post(); 

        // HERE IS THE LOOP

        return $html;
}
add_shortcode('gallery_test', 'test_shortcode' );

Sé que el bucle funcionó bien porque cuando elimino 'category_name' => 'beach' , se muestran todas las categorías.

--------------- EDITAR: -----------------

La galería que estoy usando tiene el siguiente icono y opción:

PenséqueestaeslagaleríadeWPestándar,¿meequivoco?

Cuandocreounanuevagalería,hayunaseccióndecategoríaenelladoderecho:

¿Para qué se usa esto si no puedo usarlos? No entiendo.

--------------- Fin de edición: -------------

Esto es solo un código de ejemplo. En la versión completa, el nombre de la categoría será un parámetro para ingresar el código corto, por eso me gustaría hacerlo de esta manera.

¿Alguna idea sobre cómo hacer que esto funcione?

Cualquier sugerencia es apreciada :).

Gracias.

    
pregunta Serge Inácio 27.02.2018 - 21:50

2 respuestas

2

Lo que sospecho es que esos Gallery Categories no son la taxonomía category . Probablemente sean una taxonomía registrada, registrada por el mismo script que agregó el tipo de publicación de la galería.

Para averiguarlo, haga clic en Gallery Categories (en la imagen provista) y será redirigido a una URL como esta:

http://example.com/wp-admin/edit-tags.php?taxonomy=my-taxonomy&post_type=gallery

Comprueba el argumento taxonomy . Si es diferente a category , entonces usted está en una taxonomía personalizada y necesita agregar un tax_query a su WP_Query . Aquí está cómo hacerlo:

Sus argumentos simplemente cambiarían de esto:

$port=array('post_type' => 'gallery', 'category_name' => 'beach', 'showposts' => -1 );

A esto:

$port = array(
     'post_type' => 'gallery', 
     'showposts' => -1,
     'tax_query' => array (
          array(
              'taxonomy' => 'my-taxonomy',
              'field'    => 'slug',
              'terms'    => 'beach',
          )
     )
);

Nota al margen:

Asegúrate de usar wp_reset_postdata(); justo antes de return $html; . Esto restablecerá la consulta y se asegurará de que su código abreviado no afectará a ninguna otra consulta en la página.

Todo listo.

    
respondido por el Jack Johansson 03.03.2018 - 18:26
3

Por su pregunta, entiendo que está trabajando con una instalación estándar de WordPress. Esto significa que hay no post-type llamado 'galería' . Si usted (o un complemento) ha creado uno, que es perfectamente posible , puedes ignorar lo siguiente, porque en ese caso no puedo saber qué está sucediendo o cómo debes construir sobre un código que no conozco.

Por el hecho de que desea crear un código abreviado, entiendo que desea insertar imágenes en una publicación o página regular, pero en lugar de enumerar las imágenes, como en el códice default gallery-shortcode , desea incluir una categoría y WP debe insertar imágenes con una etiqueta determinada.

Primero, intentemos entender lo que está sucediendo con tu código ahora mismo. Como puede ver en las especificaciones de wp_query, default post_type is 'post' . Por lo tanto, si utiliza una galería post_type no existente, tomará 'publicar' en su lugar. Sin embargo, no hay ninguna categoría predeterminada . Por lo tanto, si especifica un category_name que no existe, la consulta arrojará cero resultados.

A continuación, veamos cómo WP maneja los medios. Cada imagen se almacena como una publicación con el tipo de "archivo adjunto". Esa publicación tiene una identificación. El código corto predeterminado de la galería es básicamente una lista de ID. Desafortunadamente, cuando subes una imagen, no hay posibilidad de darle una categoría. Así que no puedes recuperar imágenes por categoría. Sin embargo, esto puede ser corregido fácilmente :

function wpse295373_add_categories_to_attachments() {
    register_taxonomy_for_object_type ('category', 'attachment');
    }
add_action ('init', 'wpse295373_add_categories_to_attachments');

Ahora tendrá la posibilidad de asignar una categoría a las imágenes cuando las cargue. Por lo tanto, también puedes usar la categoría para recuperarlos en tu shortcode:

$port=array('post_type' => 'attachment', 'category_name' => 'beach', 'showposts' => -1 );

Eso debería devolver todas las imágenes de la categoría de playa.

Ahora, a partir de su pregunta, no queda del todo claro si esto es lo que quiere. Tal vez te refieres a que tienes galerías de imágenes que quieres recuperar. Así que tienes una galería llamada 'España' en la categoría 'playa', que contiene cinco imágenes, otra galería llamada 'Francia' y así sucesivamente. Si eso es lo que desea, tendrá que crear su propio post_type .

    
respondido por el cjbj 03.03.2018 - 13:35

Lea otras preguntas en las etiquetas