Tipo de taxonomía tipo de mensaje personalizado de consulta basado en la página

4

Tengo un tipo de publicación personalizada llamado books . Este tipo de publicación personalizada tiene una taxonomía llamada book_category . A partir de ahora, y en el futuro previsible, hay 5 categorías en las que se puede filtrar cada libro.

Ahora, cada una de estas categorías tiene su propia página respectiva que consultará los libros según la categoría respectiva (entre otra información auxiliar relacionada con cada categoría).

En mi código de abajo, hice un intento de consultar publicaciones basadas en is_page() . Si bien esto funciona ... algo me dice que hay una manera más eficiente / adecuada de manejar esto.

<?php
if (is_page('horror')) {
  $theTermBasedOnPage = 'horror';
} elseif (is_page('comedy')) {
  $theTermBasedOnPage = 'comedy';
} elseif (is_page('romantic')) {
  $theTermBasedOnPage = 'romantic';
} elseif (is_page('nonfiction')) {
  $theTermBasedOnPage = 'nonfiction';
} elseif (is_page('drama')) {
  $theTermBasedOnPage = 'drama';
}

$args = array(
  'posts_per_page' => -1,
  'post_type' => 'books',
  'post_status' => 'publish',
  'tax_query' => array(
      array(
          'taxonomy' => 'book_category',

          'terms' => $theTermBasedOnPage,
      ),
  ),
  );
?>

¿Cuál es la mejor manera de consultar publicaciones (Tipo de publicación personalizada > Taxonomía) según la página?

    
pregunta Joe 08.08.2018 - 22:08

3 respuestas

3

Para hacerlo más eficiente, en lugar de argumentar la barra de la página actual, simplemente coloque la barra actual como el valor de los términos de tax_query. Algo como:

global $post;
$args = array(
  'posts_per_page' => -1,
  'post_type' => 'books',
  'post_status' => 'publish',
  'tax_query' => array(
      array(
          'taxonomy' => 'book_category',
          'field'    => 'slug',
          'terms'    => $post->post_name, // which'd be 'horror' or 'comedy', etc
      ),
  ),
);

Tenga en cuenta que existe una alta probabilidad de error humano al hacer las cosas de esta manera: por ejemplo, tener una página de nonfiction pero un término de book_category de non-fiction podría romper la lógica y causar problemas.

No sé el contexto en el que estás trabajando, pero si el objetivo es simplemente "cada una de estas categorías tiene su propia página respectiva" , no es necesario que construyas esta costumbre. -preguntar-con-manual-página-relación para cada término. Las taxonomías y términos de WordPress tendrán sus propias URL si has registrado la taxonomía como public y publicly_queryable . (Adivinando aquí, pero) Probablemente puedas visitar your-site.com/book_category/horror/ y ver la lista de libros de terror. Luego, puede personalizar los archivos de plantilla para todos los términos o individualmente utilizando la jerarquía de plantillas de WordPress como referencia.

    
respondido por el David Sword 08.08.2018 - 22:16
2

Páginas de taxonomía personalizadas:

No debería tener que crear una consulta personalizada con $args para obtener las páginas de taxonomía personalizadas. Simplemente puede seguir la estructura de URL proporcionada por WordPress para eso.

Por ejemplo, digamos:

  1. Has seleccionado la siguiente estructura de Permalink:

  2. LuegohascreadountipodepublicaciónpersonalizadoBook

  3. SecreóunataxonomíapersonalizadaBookCategoryysevinculóconBook.

  4. LuegocreóunnuevoBooktituladoMyHorrorStoryenHorrorcomoBookCategory.

  5. Y,creóotronuevoBooktituladoMyComedyStoryenComedycomoBookCategory.

Contodaslasdemásconfiguracionespredeterminadas,WordPressgeneraráautomáticamentelassiguientesURLparati:

//BookLinkshttps://example.com/book/my-comedy-story/https://example.com/book/my-horror-story///BookCategoryLinkshttps://example.com/book-category/comedy/https://example.com/book-category/horror/

UseestasURLparalaspáginasdetaxonomíapersonalizadasquedesee.

Plantilla

Además,puedeeditarlosarchivosdeplantilladetemaparacreareldiseñodeseado.Consulte Jerarquía de plantillas de WordPress para saber cómo hacerlo.

Por ejemplo, puede crear un archivo de plantilla denominado taxonomy-book-category.php para diseñar páginas de taxonomía personalizadas Book Category .

En ese archivo de plantilla, use WordPress Etiquetas de plantilla y The Loop para las consultas necesarias.

Por ejemplo, un archivo de plantilla muy simple puede ser como:

<?php
    if ( have_posts() ) : while ( have_posts() ) : the_post();
        the_content();
    endwhile;
    else :
        _e( 'Sorry, no book matched your criteria.', 'textdomain' );
    endif;
?>
    
respondido por el Scott 08.08.2018 - 22:53
0

Prueba esto:

<?php
// Get post's all terms.
$terms = wp_get_post_terms( get_the_ID(), 'book_category' );

// Get first term ID
$currentPostTermID = $terms[ 0 ]->term_id;

$args = array(
    'posts_per_page' => -1,
    'post_type'      => 'books',
    'post_status'    => 'publish',
    'tax_query'      => array(
        array(
            'taxonomy' => 'book_category',

            'terms' => $currentPostTermID,
        ),
    ),
);
?>
    
respondido por el bilimokur 08.08.2018 - 22:57

Lea otras preguntas en las etiquetas