在wordpress中创建一个小部件,以显示最新和最受欢迎的帖子

时间:2018-10-19 13:36:35

标签: php wordpress templates posts

我正在构建一个功能以在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; ?>

无论如何,什么也不会发生。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

好吧

首先,wpb_set_post_views()函数不返回任何内容,因为其中没有return语句,因此,return wpb_set_post_views($postID);不返回任何内容是完全正常的。

其次,wpb_set_post_views()用于更新存储指定帖子视图nb的帖子元变量,而不是返回查看次数最多的帖子列表。

您将需要创建一个这样的函数(例如,以get_most_viewed_posts($count);为例,然后在get_blog_posts()的{​​{1}}函数内调用它。