【问题标题】:WordPress: function trashs post type with a new copy of the postWordPress:功能垃圾帖子类型与帖子的新副本
【发布时间】:2017-12-15 22:17:15
【问题描述】:

我正在使用以下函数来丢弃事件的自定义帖子类型。 事件发生后,我手动删除垃圾箱。

我发现,这些帖子在应该删除后仍然发布。回收站中的版本似乎是原始帖子的新副本(带有新 ID)?

函数中是否有任何可能产生此类错误的内容?

这是我的脚本:

<?php
    function get_delete_old_events() {

    $past_query = date('Y-m-d', strtotime('-1 day'));
    // WP_Query arguments
    $args = array(
        'fields'         => 'ids', // Only get post ID's to improve performance
        'post_type'      => array( 'event' ), //post type
        'posts_per_page' => '-1',//fetch all posts,
        'meta_query'     => array(
            'relation'      => 'AND',
                array(
                    'key'       => 'gid_22',
                    'value'     =>  $past_query,
                    'compare'   => '<='
                 )
        )
    );

    // The Query
    $query = new WP_Query( $args );

    // The Loop
    if ( $query->have_posts() ) {
        while ( $query->have_posts() ) {
            $query->the_post();
            // do something
            $headers[] = 'From: Mail <mail@example.com>';

            $postid     = get_the_ID();
            $post       = get_post($postid);
            $author     = get_userdata($post->post_author);
            $subject    = "subject....: ".$post->post_title."";

            $message = "..."
;

            wp_mail($author->user_email, $subject, $message, $headers);
            wp_trash_post( $id );
            // Also tried with this: 
            // wp_trash_post( $postid );
        }
    } else {
        // no posts found
        return false;

    }

    // Restore original Post Data
    wp_reset_postdata();

}

// expired_post_delete hook fires when the Cron is executed
add_action( 'old_event_delete', 'get_delete_old_events' );


// Add function to register event to wp
add_action( 'wp', 'register_daily_events_delete_event');

function register_daily_events_delete_event() {
    // Make sure this event hasn't been scheduled
    if( !wp_next_scheduled( 'old_event_delete' ) ) {
        // Schedule the event
        wp_schedule_event( time(), 'hourly', 'old_event_delete' );
    }
}

?>

【问题讨论】:

    标签: php wordpress cron custom-post-type


    【解决方案1】:

    如果您点击垃圾链接,那么默认情况下,Wordpress 会将其保留 30 天,然后将其永久删除。

    wp_trash_post 如果 30 天未过去,则将项目移至垃圾箱,如果有,则将其删除,因此它按我预期的方式工作。

    如果您想立即永久删除文件,请使用wp_delete_post($post_id, true);

    【讨论】:

    • 好的,所以清空垃圾桶按钮不会立即清空它吗?我应该将wp_trash_post( $id ); 更改为wp_delete_post($post_id, true);
    • 只有在您进入垃圾箱并单击永久删除链接时才会将其永久删除。如果您的帖子 ID 在变量 $id 中,那么 wp_delete_post($id, true); 将立即永久删除它
    • 好的,但我已永久删除所有帖子。垃圾桶完全空了?!并且帖子再次出现在垃圾箱中,没有任何已发布的帖子被删除
    • 啊,还有一个问题...wp_delete_post(); 仅适用于原生帖子类型:(
    【解决方案2】:

    我发现我的错误...我将帖子的 ID 设置为 $postid 并改用 $id...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-02
      • 1970-01-01
      • 2020-06-12
      • 2013-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多