J'essaie d'exclure les formats de publication de côté de mes liens suivants et précédents, mais pour une raison quelconque, utiliser get_term_by
ne me renvoie pas le term_id
pour la taxonomie post_format
. Je vois que cette taxonomie est utilisée par le noyau Wordpress ici , alors je sais que je le fais de la bonne façon. Selon cette publication , je dois être sûr que la taxonomie est correctement enregistrée. Imprimer le débogage Je vois la sortie suivante de get_taxonomies()
.
Array
(
[category] => category
[post_tag] => post_tag
[nav_menu] => nav_menu
[link_category] => link_category
[post_format] => post_format
[tagportfolio] => tagportfolio
)
Donc, je peux voir que la taxonomie post_format
a été enregistrée. Voici mon code:
<?php print_r(get_taxonomies()); ?>
<?php print_r(get_term_by('id', 'post-format-aside', 'post_format')->term_id); ?>
<?php previous_post_link('‹ %link', '%title', false, array(get_term_by('id', 'post-format-aside', 'post_format')->term_id )); ?>
<?php next_post_link('%link ›', '%title', false, array(get_term_by('id', 'post-format-aside', 'post_format')->term_id )); ?>
Des idées sur pourquoi cela ne fonctionne pas? Pourquoi les posts réservés ne sont-ils pas exclus ici?
UPDATE 1
Le code suivant me renvoie un term_id de get_term_by
, mais entraîne la disparition des liens suivant/précédent:
<?php print_r(get_taxonomies()); ?>
<?php print_r(get_term_by('slug', 'post-format-aside', 'post_format')->term_id); ?>
<?php previous_post_link('‹ %link', '%title', false, array(get_term_by('slug', 'post-format-aside', 'post_format')->term_id )); ?>
<?php next_post_link('%link ›', '%title', false, array(get_term_by('slug', 'post-format-aside', 'post_format')->term_id )); ?>
L'objet renvoyé par get_term_by
est:
STDCLASS OBJECT ( [TERM_ID] => 10 [NAME] => ASIDE [SLUG] => POST-FORMAT-ASIDE [TERM_GROUP] => 0 [TERM_TAXONOMY_ID] => 10 [TAXONOMY] => POST_FORMAT [DESCRIPTION] => [PARENT] => 0 [COUNT] => 0 [FILTER] => RAW )
UPDATE 2
Lorsque j'active le débogage de la requête Wordpress , la requête suivante est déclenchée, à savoir le jeu vide.
mysql> SELECT P.ID FROM WP_POSTS AS P INNER JOIN WP_TERM_RELATIONSHIPS AS TR ON P.ID = TR.OBJECT_ID INNER JOIN WP_TERM_TAXONOMY TT ON TR.TERM_TAXONOMY_ID = TT.TERM_TAXONOMY_ID WHERE P.POST_DATE < '2015-06-01 20:10:00' AND P.POST_TYPE = 'PROJECT' AND TT.TAXONOMY = 'CATEGORY' AND P.ID NOT IN ( SELECT TR.OBJECT_ID FROM WP_TERM_RELATIONSHIPS TR LEFT JOIN WP_TERM_TAXONOMY TT ON (TR.TERM_TAXONOMY_ID = TT.TERM_TAXONOMY_ID) WHERE TT.TERM_ID IN (10) ) AND ( P.POST_STATUS = 'PUBLISH' OR P.POST_STATUS = 'PRIVATE' ) ORDER BY P.POST_DATE DESC ;
Empty set (0.01 sec)
Ce qui est étrange à propos de ce qui précède est que la requête semble tenter de trouver le post précédent en fonction de la taxonomie de la catégorie, ce que j’ai explicitement demandé à la fonction de ne pas utiliser avec les paramètres de la requête. Cela ressemble à un bug dans Wordpress pour moi.
J'ai déposé un bogue contre Wordpress car la requête ici me fait penser qu'il s'agit d'un bogue dans le framework: https://core.trac.wordpress.org/ticket/32833#ticket