删除POST_DATE>过期日期的数据库条目

时间:2018-06-08 作者:Jillian Hoenig

我有一个自定义的发布时间,它有一个到期日期。通过获取package_type pf post(每种包类型在到期前有不同的天数,称为“生存天数”),提取alive_days, 并将其添加到post_date.

我想知道是否有办法删除当前日期超过到期日期的所有帖子。

$post_id = $post->ID; // get the post ID
$package_id = get_post_meta( $post_id, \'package_select\', true ); // get the post\'s package
$transaction_price_pkg = $monetization->templ_get_price_info( $package_id, \'\' ); // get the package info
$alive_days = "+" . $transaction_price_pkg[0][\'alive_days\'] . " days"; // get the "alive days" of the given package

$expired_date = date(\'Y-m-d H:i:s\',strtotime($alive_days, strtotime($post->post_date))); // calculate the expiration date

// Here\'s where I\'m having trouble
$query = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}transactions WHERE {$expired_date >= NOW() ");
一个简单的var_dump 退货NULL. 为什么这个代码不起作用?(可能有多种原因……)

1 个回复
SO网友:Bjorn

在你的第一句话中,我假设你的意思是,你有一个自定义的帖子类型(不是时间)。

因此,post有一个连接的包,该包有一个活动天数设置。阅读您的示例代码,我认为您从错误的角度来理解这一点。

我会这样做:

// I don\'t know how you want to call this function, i would use a daily cron-job
function remove_expired_posts() {

  $current_date = new DateTime();

  $args = array(
    \'posts_per_page\'   => -1,
    \'post_type\'        => \'YOUR_CUSTOM_POST_TYPE_NAME_HERE\',
    \'post_status\'      => \'publish\',
  );
  $posts = get_posts( $args );

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

      $post_id = $post->ID;
      $post_date = DateTime::createFromFormat(\'Y-m-d H:i:s\', $post->post_date\');
      $package_id = get_post_meta( $post_id, \'package_select\', true );
      $transaction_price_pkg = $monetization->templ_get_price_info( $package_id, \'\' ); // make sure you include the $monetization object
      $alive_days = (int)$transaction_price_pkg[0][\'alive_days\']; 

      $expire_date = $post_date->modify(\'+ \'.$alive_days.\' days\');

      if($current_date > $expire_date) {
        wp_delete_post( $post_id, true ); // true means bypass bin.
      }
    }
  }
}
NOTE:
我尚未测试此代码,但它应该可以工作。至少它应该给你一个如何继续的想法。

尊敬的Bjorn

结束

相关推荐

Wordpress database connection

我的网站被黑了,我已经把所有东西都加载了,但是页面、帖子、图片等都没有显示在网站上。我注意到在我的数据库ameqt\\u wp507中有一个列表,上面写着wp\\u 507posts等,还有一个列表写着wp6t\\u posts等。其中包含wp6t的一个包含了所有内容。我如何让它看到这些信息?ThanksSarah公司