Obtenha o URL para o tipo de postagem específico e a tag atual

4

Eu tenho vários tipos de postagem personalizados, além de uma taxonomia personalizada. Eu criei uma página de arquivo para a taxonomia que lista cada post conectado, então tudo bem lá. O que eu gostaria de alcançar é o seguinte ...

No meu modelo único para essa taxonomia (chamei de Tópicos), diga se o tópico era 'câncer', gostaria de um menu de seleção suspenso ou uma lista de links para cada tipo de postagem personalizada com esse rótulo de taxonomia. Em outras palavras, se eu estiver exibindo todas as postagens marcadas com "câncer" para cada tipo de postagem (que eu tenho atualmente), essa lista suspensa ou de links na parte superior da página permitiria mostrar apenas as postagens marcadas para cada post tipo, como no seguinte:

Showing posts with topic: cancer

Select a post type to view posts with this topic:

Post type name 1 (link)
Post type name 2 (link)
Post type name 3 (link)

(all posts tagged with cancer already display here...)

Postar tipo 1, quando clicado, carrega a página de taxonomia única novamente, mas lista apenas as postagens marcadas com "câncer" para esse tipo de postagem. Isso se aplica a algumas das poucas dezenas de tags para essa taxonomia personalizada, por isso não posso codificar a URL. Precisa ser dinâmico.

Espero que isso faça sentido. Eu procurei por dois dias sobre isso e até agora não consegui nada. Qualquer ajuda ou direção seria apreciada. Infelizmente, o projeto em que estou trabalhando está fechado e não posso compartilhar nenhum link. Também estou usando o plugin Custom Post Type UI (não por opção) e sei que o plugin não funciona bem com taxonomias, mas espero que minhas mãos não estejam amarradas aqui.

Felicidades.

    
por Freddy 27.01.2016 / 20:54

2 respostas

1

Se o URL para o termo de taxonomia 'câncer' no seu exemplo tiver esta aparência:

yourwebsite.com/topics/cancer/

você pode filtrar esses resultados por tipo de postagem com URLs estruturados como este:

yourwebsite.com/topics/cancer/?post_type=question

Basta colocar isso em functions.php

add_filter( 'pre_get_posts', 'wp123_post_type_by_taxonomy' );
function wp123_post_type_by_taxonomy( $query ) {
    if( is_tax( 'topics' ) && $query->is_main_query() ) {

        // get all post types:
        $post_types = get_post_types();

        // or add specific post types:
        // $post_types = array( 'post_type_1', 'post_type_2' );

        if ( !empty( $_GET['post_type'] ) && post_type_exists( $_GET['post_type'] ) ) {
            // show only results for this post type
            $query->set( 'post_type', $_GET['post_type'] );
        }

    }
}
    
por locomo 26.02.2016 / 05:16
-1

De acordo com o que eu entendo é:

Na sua taxonomy.php

Adicione este código:

 $term = get_term_by( 'slug', get_query_var('term'), get_query_var('taxonomy') );
 echo '<h2>Showing posts with topic : ' . $term->name .'</h2>';

Isso resultará em mostrar "Mostrando postagens com o tópico: Câncer"

Agora para (todas as postagens marcadas com câncer já são exibidas aqui ...)

Você pode executar um get_posts () para obter isso:

$all_post = get_posts(array(
    'post_type' => array( 'cpt1', 'cpt2', 'cpt3', 'post' ), // all cpt slug name
    'numberposts' => -1, // number of post
    'tax_query' => array(
         array(
             'taxonomy' => get_query_var( 'taxonomy '), // current tax name
             'field' => 'id',
             'terms' => $term->term_id, // current tax_id
        )
    )
);

Por meio de um loop sobre eles, podemos obter todos os detalhes do post e podemos exibi-los.

    
por Aftab 02.02.2016 / 08:36