如何添加新的元键并为帖子分配时间戳

时间:2013-02-22 作者:David Garcia

我一直在寻找一种方法,在我的网站上创建一个循环,并显示正在阅读/观看的帖子,但没有发现任何东西。

我能做到这一点的唯一方法是创建一个新的元键(自定义字段),并将时间戳指定为值,这样我就可以创建一个循环,并使用其值列出在一个时间范围内(例如5分钟)正在观看的帖子。

问题是我对wordpress非常陌生,我不知道怎么做

1 个回复
SO网友:Adam

实现这一点的一个非常简单的方法如下:;

add_action(\'template_redirect\', \'recently_read\');
function recently_read(){

    global $post;

    //only run this function for the posts post_type
    if ( !is_single() ) 
        return;

    //get the current time in the format of: 2013-02-22 11:55:51 
    $timestamp = current_time(\'mysql\'); 

    //add the $timestamp variable to the meta_key for this post
    update_post_meta($post->ID, \'reading_this\', $timestamp);


}
注:以上功能进入主题functions.php 文件,并连接到template_redirect 在向用户显示页面之前激发的操作。此时,在幕后recently_read 函数将启动并在键下添加时间戳reading_this (根据你的喜好命名)。每次查看此帖子或任何帖子时都会发生这种情况。如果给定帖子已经存在时间戳,那么它将相应地更新时间戳。

然后,要使用此键检索帖子列表,您可以在希望这些帖子显示的主题文件中执行以下操作:;

$recently_read = get_posts( 
    array(
        \'posts_per_page\'  => 5,       //how many posts we want to show at most
        \'meta_key\' => \'reading_this\', //get posts by our meta key
        \'orderby\' => \'meta_value\',    //order posts by the value stored in the key
        \'order\' => \'DESC\'             //order posts in descending order (newest to oldest)
   )
); 

foreach ($recently_read as $read) {
    echo \'<a href="\'. get_permalink($read->ID) . \'">\'. $read->post_title .\'</a>\';
}
上述内容可以通过多种方式进行改进,但这肯定会让您开始。

注意:这没有任何逻辑来确定帖子是否在最后X分钟内查看。为此,您可以将自己的逻辑应用于名为reading_this 并根据您的喜好操纵数据。

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在