Intereting Posts
Ang2 + REST API: обновить live на новый комментарий WordPress добавляет поля и дополнения в мое меню? get_the_terms (), чтобы показать все пользовательские таксономии Дополнительные пользовательские поля – проверка нескольких пустых полей Шаблон пользовательской таксономии WordPress не работает Ползунок должен отображаться в домашнем шаблоне Ограничить редактирование / удаление почты на основе идентификатора пользователя и настраиваемого поля Верхнее меню, отображаемое как Обычный текст перед загрузкой страницы Экспорт пользовательских CSV-продуктов Woocommerce Как настроить таргетинг только на первую страницу (не последующие страницы с разбивкой на страницы) в теме / плагине? Уточнить запрос таксономии пользователя на основе роли Как получить весь пользовательский тип сообщения, отфильтрованный по одному конкретному термину таксономии WP_User_Query с более чем двумя настраиваемыми мета значениями Запретить дублирование запроса Динамическое создание метабоксов

Динамически ссылаться на последнее сообщение или моделировать запрос определенной должности в шаблоне страницы

Я хочу иметь ссылку в меню WordPress, указывающую на последнее сообщение определенной категории.

Поскольку я не могу разместить динамический URL-адрес в меню wordpress, мой подход заключался в том, чтобы в меню добавить страницу с настраиваемым шаблоном страницы.

Этот шаблон страницы должен вести себя как темы single.php но показывая последний single.php из данной категории.

Есть ли способ включить темы single.php и имитировать запрос определенной записи?

Я попытался скопировать содержимое single.php в шаблон страницы и изменить запрос с помощью

 query_posts( array( 'cat' => 9993, 'showposts' => 1) ); 

Если я сделаю это до the_header() , тогда я не получу сообщений. Если я сделаю это после the_header() , я получу правильный контент, но заголовок темы установит некоторые конкретные классы для стилизации страницы. Поэтому мне нужна the_header() чтобы думать, что запрашиваемая страница была запрошена, а не страница.

Обновление: я не полностью использовал решение toscho, потому что я не получил выделение активного элемента меню и в правильном положении. Но он указал мне в правильном направлении с фильтром wp_nav_menu_objects .

У меня был элемент главного меню CategoryX, который должен открывать непосредственно последнее сообщение из CategoryX , а также открывать подменю со ссылками на старые сообщения и другие связанные вещи. В подменю также должна быть ссылка на последнюю Post ( LatestFromX ), которая также должна быть выделена непосредственно после klicking в CategoryX в главном меню.

То, что я в основном делал, было: Создание фиктивных пунктов меню с помощью брандмауэра WP, а затем замена его URL-фильтрами на функцию фильтра.

 function wp_menu_add_last_from_category_x( $sorted_menu_items, $args ) { global $wp; // get url of latest article in CategoryX (CategoryX has id 9993): $latest = get_posts( array( 'numberposts' => 1, 'category' => 9993 ) ); $latest_url = get_permalink($latest[0]->ID); // search for the dummy menu items and replace the url: foreach ($sorted_menu_items as $key => $item) { if ($item->title === 'CategoryX' || $item->title === 'LatestFromX') { $sorted_menu_items[$key]->url = $latest_url; if ($wp->request == $latest[0]->post_name) { $sorted_menu_items[$key]->classes[] = "current-menu-item"; } } } return $sorted_menu_items; } 

Solutions Collecting From Web of "Динамически ссылаться на последнее сообщение или моделировать запрос определенной должности в шаблоне страницы"

Вы можете отфильтровать wp_nav_menu_objects и добавить новый элемент. Вот простой плагин:

 <?php # -*- coding: utf-8 -*- /** * Plugin Name: Latest Post In Menu * Description: Append a link to the latest post to all nav menus called with the argument <code>'add_latest_post' => TRUE</code>. * Plugin URI: http://wordpress.stackexchange.com/q/59892/73 * Version: 2012.07 * Author: Thomas Scholz * Author URI: http://toscho.de * License: MIT * License URI: http://www.opensource.org/licenses/mit-license.php */ add_filter( 'wp_nav_menu_objects', 'wpse_59892_latest_post_in_nav_menu', 10, 2 ); /** * Add a link to the latest post to the nav menu. * * The nav menu has to be called with 'add_latest_post' => TRUE. * Example: * wp_nav_menu( * array( * 'theme_location' => 'primary', * 'add_latest_post' => TRUE * ) * ); * * @wp-hook wp_nav_menu_objects * @param array $sorted_menu_items Existing menu items * @param object $args Nav menu arguments as object. * @return array */ function wpse_59892_latest_post_in_nav_menu( $sorted_menu_items, $args ) { if ( ! isset ( $args->add_latest_post ) // argument set? or ! $args->add_latest_post // argument TRUE? or ! $latest = get_posts( array ( 'numberposts' => 1 ) ) // post found? ) { return $sorted_menu_items; } // Uncomment the following line to see what you can change: // print '<pre>' . htmlspecialchars( var_export( $sorted_menu_items, TRUE ) ) . '</pre>'; $post = $latest[0]; $content = empty ( $post->post_excerpt ) ? $post->post_content : $post->post_excerpt; $link = array ( 'title' => $post->post_title, 'menu_item_parent' => 0, 'ID' => '', 'db_id' => '', 'url' => get_permalink( $post->ID ), 'classes' => array ( 0 => '', 1 => 'menu-item', 2 => 'menu-item-type-post_type', 3 => 'menu-item-object-post', 4 => 'latest-post', ), // strips all tags and reduces the length to 20 words 'attr_title' => wp_trim_words( $content, 20 ), ); $sorted_menu_items[] = (object) $link; return $sorted_menu_items; } 

Если мы напишем новое сообщение …

введите описание изображения здесь

… и вызовите навигационное меню, подобное этому …

 wp_nav_menu( array( 'theme_location' => 'primary', 'add_latest_post' => TRUE ) ); 

… мы получаем …

введите описание изображения здесь

Элемент меню навигации имеет класс latest-post , поэтому мы можем создать его в CSS:

 .menu .latest-post a { color: #eee; background: #9f0; } 

Или используйте этот плагин. Не требуется кодирование wp_nav_menu:

https://de.wordpress.org/plugins/dynamic-latest-post-in-nav-menu/

https://github.com/hijiriworld/dynamic-latest-post-in-nav-menu