Intereting Posts
Получить сообщение ID из ссылки Вопросы о Git и WordPress Как составить список, отображающий подстраницы верхнего уровня, и любые подстраницы или братья и сестры с текущей страницы Создайте собственный столбец сортировки по значению из другого настраиваемого типа сообщения Как установить, куда пользователь перенаправляется после входа в wp-login? Изменение изображения заголовка страницы Связь со страницами / сообщениями на сайте Несколько шаблонов Permalink для одной страницы Визуальный редактор WordPress испортил мои (вложенные) списки (и другие вещи) Загрузка массового изображения и одно изображение для каждого сообщения? Пользовательский URL таксономии перенаправляется на страницу с тем же именем Создание настраиваемого URL-адреса метода POST Каковы допустимые значения тегов в заголовке файла темы? Как реализовать jPanelMenu? 404 после публикации сообщения

Можно ли фильтровать get_adjacent_post () с помощью тегов?

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

Solutions Collecting From Web of "Можно ли фильтровать get_adjacent_post () с помощью тегов?"

get_adjacent_posts() имеет несколько фильтров для компонентов сгенерированного SQL-запроса, включая:

  • get_{$adjacent}_post_join
  • get_{$adjacent}_post_where

Где $adjacent может быть next или previous . Источник .

Таким образом, нет простого способа перевернуть его из категорий в теги, но вы можете манипулировать SQL-запросом и добавлять собственные условия (или полностью изменять их).

Эта функция только что изменена get_adjacent_post:

 /* better get_adjacent_post */ function get_adjacent_post_by_taxonomy($tagID, $previous){ global $wpdb; if ( ! $post = get_post() ) return null; $current_post_date = $post->post_date; $join = " INNER JOIN $wpdb->term_relationships AS tr ON p.ID = tr.object_id INNER JOIN $wpdb->term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id AND tt.term_id IN (" . $tagID . ")"; $adjacent = $previous ? 'previous' : 'next'; $op = $previous ? '<' : '>'; $order = $previous ? 'DESC' : 'ASC'; $join = apply_filters( "get_{$adjacent}_post_join", $join ); $where = apply_filters( "get_{$adjacent}_post_where", $wpdb->prepare("WHERE p.post_date $op %s AND p.post_type = %s AND p.post_status = 'publish'", $current_post_date, $post->post_type)); $sort = apply_filters( "get_{$adjacent}_post_sort", "ORDER BY p.post_date $order LIMIT 1" ); $query = "SELECT p.ID FROM $wpdb->posts AS p $join $where $sort"; $query_key = 'adjacent_post_' . md5($query); $result = wp_cache_get($query_key, 'counts'); if ( false !== $result ) { if ( $result ) $result = get_post( $result ); return $result; } $result = $wpdb->get_var( $query ); if ( null === $result ) $result = ''; wp_cache_set($query_key, $result, 'counts'); if ( $result ) $result = get_post( $result ); return $result; } 

Передайте категорию или тег term_taxonomy_id этим функциям $ tax_id для использования для тега или категории. Я использую его как:

 $tags = get_the_tags(); if($tags) : foreach($tags as $tag) : ?> ... <?php $prevTagPost = get_adjacent_post_by_taxonomy($tag->term_taxonomy_id,true); if (!empty( $prevTagPost )): ?> 

и т.п.

Как и get_adjacent_post, bool $ предшествует переключению между предыдущим / следующим.