Intereting Posts
Как избежать конфликтов с db.php / $ wpdb и другими плагинами, которые решили использовать их? Можем ли мы создать настраиваемый шаблон публикации для определенного шаблона страницы Разбивка страниц – публикация содержимого первой страницы Переписать большинство URL-адресов WordPress Как отображать количество сообщений в сети? Обновление плагинов WordPress ломает SVN angularjs не отображает все сообщения если имя пользователя или пароль неверны, wp-login возвращает пустую страницу Тема моего плагина входа, как обновить поля WP Insert Post, а затем перейти к сообщению Функция, которая запрещает пользователям загружать фотографии больше фотографий checkbox in post добавить / изменить, чтобы добавить / удалить сообщение из меню Admin Filter – Добавить тип сообщения на странице типа сообщения wp_list_categories: получите последнюю характеристику категории Добавление регулярного выражения в feedwordpress

Можно ли фильтровать 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 $ предшествует переключению между предыдущим / следующим.