Obtener URL para el tipo de publicación específica y la etiqueta actual

4

Tengo varios tipos de publicaciones personalizadas, así como una taxonomía personalizada. Creé una página de archivo para la taxonomía que enumera cada publicación conectada, así que todo está bien allí. Lo que me gustaría lograr es lo siguiente ...

En mi plantilla única para esa taxonomía (lo he llamado Temas), si el tema era 'cáncer', me gustaría un menú desplegable de selección o una lista de enlaces a cada tipo de publicación personalizada CON esa etiqueta de taxonomía. En otras palabras, si muestro todas las publicaciones etiquetadas con 'cáncer' para cada tipo de publicación (que tengo actualmente), esa lista desplegable o de enlaces en la parte superior de la página me permitirá mostrar solo las publicaciones etiquetadas para cada tipo de publicación, como en el siguiente:

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...)

La publicación tipo 1, cuando se hace clic en ella, vuelve a cargar la página de taxonomía única, pero solo enumera las publicaciones etiquetadas con 'cáncer' para ese tipo de publicación. Esto se aplicaría a cualquiera de las pocas docenas de etiquetas para esa taxonomía personalizada, por lo que no puedo codificar la URL. Necesita ser dinámico.

Espero que esto tenga sentido. He buscado por dos días en esto y hasta ahora no he encontrado nada. Cualquier ayuda o dirección sería apreciada. Desafortunadamente, el proyecto en el que estoy trabajando está cerrado y no puedo compartir ningún enlace. También estoy usando el complemento UI de tipo de publicación personalizada (no por elección) y sé que el complemento no funciona bien con las taxonomías, pero espero que mis manos no estén atadas aquí.

Saludos.

    
pregunta Freddy 27.01.2016 - 20:54

2 respuestas

1

Si la URL del término de taxonomía "cáncer" en su ejemplo tenía este aspecto:

yourwebsite.com/topics/cancer/

luego puedes filtrar estos resultados por tipo de publicación con una URL estructurada de esta manera:

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

Simplemente ponga esto en 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'] );
        }

    }
}
    
respondido por el locomo 26.02.2016 - 05:16
-1

Según lo que entiendo es:

En tu taxonomy.php

Añade 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>';

Esto dará como resultado que se muestre "Mostrando publicación con tema: Cáncer"

Ahora para (todas las publicaciones etiquetadas con cáncer ya se muestran aquí ...)

Puedes ejecutar un get_posts () para obtener esto:

$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
        )
    )
);

Al pasar sobre ellos, podemos obtener todos los detalles de la publicación y podemos mostrarlos.

    
respondido por el Aftab 02.02.2016 - 08:36

Lea otras preguntas en las etiquetas