Я создаю функцию для отображения моих последних сообщений в WordPress, и я хотел бы знать, как вернуть некоторые из них:
вот мой код:
function wpb_set_post_views($postID) {
$count_key = 'wpb_post_views_count';
$count = get_post_meta($postID, $count_key, true);
if($count==''){
$count = 0;
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, '0');
}else{
$count++;
update_post_meta($postID, $count_key, $count);
}
}
Я скопировал предложение, основанное на представлении о том, как отображать самые последние сообщения без плагина.Пока все хорошо, за исключением того, что мне нужно что-то вернуть, чтобы создать небольшой виджет для переключения между самым последним и самым популярным.Самый популярный виджет был немного проще, например:
function get_recent_posts($count){
$args = [
'numberposts' => $count,
'offset' => 0,
'category' => 0,
'orderby' => 'post_date',
'order' => 'DESC',
'include' => '',
'exclude' => '',
'meta_key' => '',
'meta_value' =>'',
'post_type' => 'post',
'post_status' => 'publish',
'suppress_filters' => true
];
return wp_get_recent_posts( $args );
}
И вот часть, где я могу переключаться между ними:
function get_blog_posts($count , $type='recent'){
if($type=='recent'){
$posts = get_recent_posts($count);
} else {
$posts = wpb_set_post_views(get_the_ID());
}
var_dump($posts);
die();
return $posts;
}
Как я уже сказал, я пытаюсь построить его так, в данный момент я сбрасываю свой массив, чтобы посмотреть, работают ли они, как я аспект.Если я переключусь на популярный, я получу значение NULL, но если я попытаюсь вернуть свою функцию с помощью
return function wpb_set_post_views($postID);
, я забыл упомянуть, что я буду вызывать свою функцию в своем шаблоне следующим образом:
<?php if($blog_posts = get_blog_posts( wp_kses_post($instance['posts_type']) )):
foreach ($blog_posts as $blog_post) :
?>
<a class="blog-archive-sidebar-feed" href="<?=get_permalink($blog_post['ID'])?>">
<span class="blog-archive-title"><?=$blog_post['post_title']?></span>
<p class="blog-archive-date"><?=date('F d, Y' , strtotime($blog_post['post_date']))?></p>
</a>
<?php endforeach; endif; ?>
В любом случае, ничего не произойдет.
Есть предложения?