Wordpress ACF - 如果ACF日期字段早于当前日期,则自动删除帖子

时间:2014-05-02 16:31:50

标签: php wordpress advanced-custom-fields

好的,这里有: ACF有日期字段,可以应用于帖子,页面等。我使用它来创建非常基本的事件,使用帖子,而不是页面。我只需要使用帖子来举办活动。考虑到这一点,这是我的问题:

我想知道是否可以删除带有PHP的帖子(在帖子模板中),(当它循环播放帖子时),如果该帖子的ACF日期字段早于当前帖子,则删除帖子日期。

这似乎应该是现在应该已经解决或追求的东西,但我没有得到很好的Google结果。所以我猜这可能涉及到cron工作或更深入的PHP /后端掌握?

通常我要做的是以下内容:

<?php 

// get posts
$posts = get_posts(array(
    'post_type'     => 'post',
    'posts_per_page'    => -1,
    'meta_key'      => 'start_date',
    'orderby'       => 'meta_value_num',
    'order'         => 'ASC'
));

if( $posts )
{
    foreach( $posts as $post )
    {

        // CODE to delete post if ACF date is old

        $titleID = get_the_title($ID);
        echo '<h3>' . $titleID . '</h3>';
        // I've removed some of the other stuff like links, 
        // excerpts, etc, to keep this simple.

    }
}

&GT;

我不只是想过滤掉旧事件,我希望它们消失,删除(保持DB亮)。

理想情况下,我不想手动删除旧事件。

1 个答案:

答案 0 :(得分:4)

您可以使用wp_delete_post()删除start_date太旧的帖子:

// get a timestamp from the time string
$post_date = strtotime($post->start_date);
// check if the start_date is older than 1 week
if (((time() - $post_date) > (7 * 24 * 60 * 60))) {
  // to remove the post directly i.e. not moving it to trash
  // you could set the second argument to true
  wp_delete_post($post->ID);
} else {
  print '<h3>' . $post->post_title . '</h3>';
}