2013-06-28 1 views
2

У меня есть настраиваемый тип сообщения, в котором я использую пользовательские таксономии. Эти таксономии используются для фильтрации и создания индексного списка сообщений.Предварительная фильтрация для get_next_post() в Wordpress на основе текущих переменных запроса

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

Есть ли способ вытащить «следующее совпадение» вместо следующего сообщения того же пользовательского типа? Кажется, что должен быть включен параметр переменных фильтра, но я не могу его найти.

Было бы неплохо сделать что-то вроде:

$filter = array("foo"=>"bar","category"=>"something"); 
$next_post = get_next_post($filter); 

Очевидно, что это не совместим с API Wordpress, но только аналогичный опции «in_same_cat», который, безусловно, не для этого достаточно.

Основной запрос, в псевдо-SQL, было бы что-то вроде:

SELECT * from wp_posts where (insert custom arguments here) 
    AND ID<(current post id) 
    AND LIMIT=1 
    AND ORDER_BY=ID 
    AND ORDER=DESC 

ответ

0

Если бы я получил это право, вы хотите изменить сообщения, которые будут появляться в том, что «следующий/предыдущий пост» от один шаблон. Насколько я знаю, он использует функцию post_nav_link (http://codex.wordpress.org/Function_Reference/posts_nav_link). Есть два способа изменить это поведение:

  1. параметров функции: Как вы можете видеть на этой ссылке и в http://core.trac.wordpress.org/browser/tags/3.6.1/wp-includes/link-template.php#L1636, вы можете попробовать использовать параметры, чтобы обеспечить требуемое поведение.

но ...

  1. Использование фильтров: Возможно, что вам нужно использовать фильтр get_pagenum_link. С помощью этого фильтра вы сможете вернуть идентификатор сообщения, которое хотите показать. Так что просто используйте $ wp_query или $ post globals и помогите себе.

Если вам нужна помощь, просто спросите, я буду рад помочь.