如何仅在超过2周的帖子上执行代码

时间:2014-09-08 作者:user2516976

我正在尝试修改一个插件,使其仅在两周以上的帖子上执行。我在下面添加了isOldEnough函数来尝试这样做。我错过了什么?

function remove_metadata()

{
$isOldEnough = function ()
    {
        $postDate = strtotime( $post->post_date );
        $todaysDate = time();
        if($postDate - $todaysDate > 129600) {
            return true;
        } else {
            return false;
        }
    };
 if ($isOldEnough) 
 {
        /* Register style css. */
        wp_enqueue_style( \'remove-style-meta\', plugins_url( \'css/entrymetastyle.css\', __FILE__ ), false, \'1.0\', \'all\' );

}
}
add_action(\'wp_head\', \'remove_metadata\');
该插件只需使用几行CSS删除元数据。

现在,无论post\\u日期如何,它都会在所有帖子上执行代码。

1 个回复
SO网友:DrewAPicture

看起来有几件事出了问题。

首先,我一定要申报$post 全球的,可能也值得用is_single() 和/或is_singular() 最后,在计算时间大于2周的部分,切换当前时间和发布日期。这对我有用:

/**
 * Enqueue a stylesheet for posts older than two weeks.
 */
function hide_meta_for_older_posts() {
    if ( is_single() || is_singular() ) {
        global $post;

        if ( time() - strtotime( $post->post_date ) > ( 2 * WEEK_IN_SECONDS ) ) {
            wp_enqueue_style( \'remove-style-meta\', plugins_url( \'css/entrymetastyle.css\', __FILE__ ), false, \'1.0\', \'all\' );
        }
    }
}
add_action( \'wp_head\', \'hide_meta_for_older_posts\' );

结束