Galeria padrão do WP - mostra apenas galerias de uma certa categoria

4

Estou usando a Galeria padrão do WordPress e adicionando categorias a eles. Agora criei um shortcode com um loop para levar as galerias a uma 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' );

Eu sei que o loop funcionou bem, porque quando eu removi 'category_name' => 'beach' ele exibe todas as categorias.

--------------- EDIT: -----------------

A galeria que estou usando tem o seguinte ícone e opção:

EupenseiqueestaéagaleriapadrãodoWP,estouerrada?

Quandoeucrioumanovagaleria,háumaseção"Categoria" à direita:

Para que isso é usado se eu não puder usá-los? Eu não entendo.

--------------- End EDIT: -------------

Este é apenas um código de exemplo. Na versão completa, o nome da categoria será um parâmetro para entrar no shortcode, é por isso que eu gostaria de fazer assim.

Alguma idéia de como fazer isso funcionar?

Qualquer sugestão é apreciada:).

Obrigado.

    
por Serge Inácio 27.02.2018 / 21:50

2 respostas

2

O que eu suspeito é que esses Gallery Categories não são a category taxonomia. Eles provavelmente são uma taxonomia registrada, registrada pelo mesmo script que adicionou o tipo de postagem da galeria.

Para descobrir, clique no Gallery Categories (na imagem fornecida) e você será redirecionado para uma URL como esta:

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

Verifique o argumento taxonomy . Se for algo diferente de category , você estará em uma taxonomia personalizada e precisará adicionar um tax_query ao seu WP_Query . Veja como fazer isso:

Seus argumentos simplesmente mudariam disso:

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

Para isso:

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

Nota lateral:

Certifique-se de usar wp_reset_postdata(); antes do return $html; . Isso redefinirá a consulta e fará com que seu código de acesso não afete outras consultas na página.

Tudo pronto.

    
por Jack Johansson 03.03.2018 / 18:26
3

Da sua pergunta, entendo que você está trabalhando com uma instalação padrão do WordPress. Isso significa que não há post-type chamado 'galeria' . Se você (ou um plugin) criou um, que é perfeitamente possível , você pode desconsiderar o seguinte, porque nesse caso eu não posso saber o que está acontecendo ou como você deve construir o código que eu não conheço.

Do fato de você querer criar um shortcode, entendo que deseja inserir imagens em uma postagem ou página normal, mas em vez de listar as imagens, como no default gallery-shortcode , você deseja incluir uma categoria e o WP deve inserir imagens com um determinado rótulo.

Primeiro, vamos tentar entender o que está acontecendo com seu código agora. Como você pode ver nas especificações do wp_query, o padrão post_type é 'post' . Portanto, se você usar uma galeria post_type não existente, ela será substituída por 'post'. No entanto, há nenhuma categoria padrão . Portanto, se você especificar um category_name que não existe, a consulta retornará zero resultados.

A seguir, vamos ver como o WP manipula a mídia. Cada imagem é armazenada como uma postagem com o tipo 'anexo'. Essa postagem tem um ID. O shortcode da galeria padrão é basicamente uma lista de ID's. Infelizmente, quando você faz o upload de uma imagem, não há possibilidade de dar uma categoria a ela. Então você não pode recuperar imagens por categoria. No entanto, isso pode ser corrigido facilmente :

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

Agora, você terá a possibilidade de atribuir imagens a uma categoria ao fazer o upload delas. Então você também pode usar a categoria para recuperá-los em seu shortcode:

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

Isso deve retornar todas as imagens da categoria de praia.

Agora, a partir de sua pergunta, não está claro se isso é o que você deseja. Talvez você queira dizer que tem galerias de imagens que deseja recuperar. Então você tem uma galeria chamada 'spain' na categoria 'beach', contendo cinco imagens, outra galeria chamada 'france' e assim por diante. Se é isso que você quer, você realmente terá que criar seu próprio post_type .

    
por cjbj 03.03.2018 / 13:35