предыдущая ссылка на публикацию/следующая ссылка на публикацию исчезают при исключении по формату публикации


Я пытаюсь исключить другие форматы сообщений из моих следующих и предыдущих ссылок, но по какой-то причине использование get_term_by не возвращает мне term_id для таксономии post_format. Я вижу, что эта таксономия используется ядром Wordpress здесь, поэтому я знаю, что делаю это правильно. Согласно этой публикации , мне нужно быть уверенным, что таксономия правильно зарегистрирована. Отладка печати Я вижу следующий вывод из get_taxonomies().

Array
(
    [category] => category
    [post_tag] => post_tag
    [nav_menu] => nav_menu
    [link_category] => link_category
    [post_format] => post_format
    [tagportfolio] => tagportfolio
)

Так что я могу видеть post_format таксономия зарегистрирована. Вот мой код:

<?php print_r(get_taxonomies()); ?>
<?php print_r(get_term_by('id', 'post-format-aside', 'post_format')->term_id); ?>
<?php previous_post_link('&lsaquo; %link', '%title', false, array(get_term_by('id', 'post-format-aside', 'post_format')->term_id )); ?>
<?php next_post_link('%link &rsaquo;', '%title', false, array(get_term_by('id', 'post-format-aside', 'post_format')->term_id )); ?>

Есть идеи, почему это не работает? Почему здесь не исключаются дополнительные сообщения?

ОБНОВЛЕНИЕ 1

Следующий код возвращает мне идентификатор термина из get_term_by, но приводит к исчезновению следующих/предыдущих ссылок:

<?php print_r(get_taxonomies()); ?>
<?php print_r(get_term_by('slug', 'post-format-aside', 'post_format')->term_id); ?>
<?php previous_post_link('&lsaquo; %link', '%title', false, array(get_term_by('slug', 'post-format-aside', 'post_format')->term_id )); ?>
<?php next_post_link('%link &rsaquo;', '%title', false, array(get_term_by('slug', 'post-format-aside', 'post_format')->term_id )); ?>

Объект, возвращаемый get_term_by, выглядит следующим образом:

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 )

ОБНОВЛЕНИЕ 2

Когда я включаю отладку запросов Wordpress, я вижу следующее запускается запрос, который является пустым набором.

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)

Что странно в вышеприведенном, так это то, что запрос, похоже, пытается найти предыдущее сообщение на основе таксономии категорий, которую я явно попросил функцию не выполнять с помощью параметров запроса. Мне это кажется ошибкой в Wordpress.

Author: markshiz, 2015-06-29

1 answers

Я зарегистрировал ошибку в Wordpress, так как запрос здесь наводит меня на мысль, что это ошибка в фреймворке: https://core.trac.wordpress.org/ticket/32833#ticket

 0
Author: markshiz, 2015-06-30 04:10:28