Прежде всего, 90% этого кода работает, просто нужно немного нажать: D
Все делается внутри functions.php
Я добавляюпункт в моем меню заголовка, где он должен динамически отображать некоторые сообщения в определенной категории.
Я получаю сообщения, используя функцию ниже, которая была взята и изменена для моих нужд отсюда
function get_latest_post_thumbnails_urls() {
// Set an empty variable which will hold our array of URL's
$output = [];
// Set our query args
$args = [
'posts_per_page' => 3,
'fields' => 'ids', // Only get post ID's
'meta_query' => [ // Get posts which has thumbnails only
[
'key' => '_thumbnail_id',
'compare' => 'EXISTS'
]
],
'cat' => '5'
// Any additional parameters you might need
];
$q = get_posts( $args );
// ALWAYS make sure we have posts, else return $output
if ( !$q )
return $output;
// Ok, we have posts, lets loop through them and create an array of URL's
foreach ( $q as $id )
$output[] = wp_get_attachment_url( get_post_thumbnail_id( $id ) );
// Return our array
return $output;
}
Затем я использую функцию ниже, чтобы добавить пункт меню ( адаптировано отсюда ), но переменная не отображается в правильном месте во время цикла.<li>
должен быть внутри <ul>
.
add_filter('wp_nav_menu_items', 'add_admin_link', 10, 2);
function add_admin_link($items, $args){
if( $args->theme_location == 'main_menu' ){
$items .= '<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children dropdown menu-item-1441">
<a class="sf-with-ul" title="Eventos" href="/eventos/"><span class="link-inner">EVENTOS <span class="nav-arrow top-level fa fa-angle-down"></span></span></a>
<ul class="sub-menu" style="display: none;">'.
$urls = get_latest_post_thumbnails_urls();
if ( $urls ) {
foreach ( $urls as $url ) {
// Do something with your thumbnail url
echo '<li>'. $url .'</li>';// For testing, remove this
}
}
'</ul>
</li>';
}
return $items;
}
Как вы можете видеть на изображении, функция получает всеправильной информации, но она выводит ее до пункта меню.
//////////////// NEW CODE HELP //////////////////
add_filter('wp_nav_menu_items', 'add_admin_link', 10, 2);
function add_admin_link($items, $args){
if( $args->theme_location == 'main_menu' ){
//add your first few elements to the $items variable
$items .= '<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children dropdown menu-item-1441">';
$items .= '<a class="sf-with-ul" title="Eventos" href="/eventos/"><span class="link-inner">EVENTOS <span class="nav-arrow top-level fa fa-angle-down"></span></span></a>';
$items .= '<ul class="sub-menu" style="display: none;">';
$args = array(
'post_type' => 'post',
'posts_per_page' => -1,
'cat' => '5'
);
$post_query = new WP_Query($args);
if($post_query->have_posts() ) {
while($post_query->have_posts() ) {
$post_query->the_post();
$items .= '<h2>'. the_title() .'</h2>';
}
};
//close the dom elements
$items .= '</ul>';
$items .= '</li>';
}
//return the final product