WP_QUERY(或钩子)在数组中按日期(Id)发布帖子,然后设置post_type

时间:2016-02-19 作者:user3795286

嗨,我正在构建一个插件,我对wordpress钩子不太熟悉。代码不会用于在页面上显示,而只是在数据库中设置。我正在寻找一个钩子或代码片段,它将帮助我执行以下操作:

从当前日期的某个日期之前,将post\\u type=\'post\'的所有post\\id抓取到一个数组中,然后将每个数组中的post\\u type=\'customposttype\'设置为数组中的所有post\\u id,然后执行wordpress在该“挂钩”之后需要清理的任何处理。(我不确定是否需要这样做。)由于我正在构建一个插件,另一个插件对我没有帮助,但我绝对愿意接受建议。非常感谢。

1 个回复
最合适的回答,由SO网友:user3795286 整理而成

感谢@pietergoosen“开玩笑地”给了我答案。

 function gm_gather_posts_in_array() {
    $set_days_before = \'1275\';
    $posts_to_be_processed = date(\'Y-m-d\', strtotime("today - $set_days_before days"));
    $args = array( 
            \'post_type\'      => \'post\',
            \'post_status\'    => \'publish\',
            \'orderby\'        => \'date\',
            \'order\'          => \'DESC\',
            \'posts_per_page\' => -1,
            \'fields\'         => \'ids\',
            \'date_query\'     => array(
                            array(
                                \'before\' => $posts_to_be_processed
                            )
                    )
            );
    $posts_to_be_processed = new WP_Query( $args );

    return $posts_to_be_processed;

    }


function gm_update_posts_to_be_archived() {
        $posts_ready_to_be_processed = gm_gather_posts_in_array();
             if ( $posts_ready_to_be_processed->have_posts() ) {
                while ( $posts_ready_to_be_processed->have_posts() ) {
                    $posts_ready_to_be_processed->the_post();
                        $process_post = array(
                        \'ID\'           => get_the_id(),
                        \'post_type\'   => \'custom_post_type\',
                        );

                        wp_update_post( $process_post ); 

                    }

                }


            wp_reset_postdata();
}

   echo gm_update_posts_to_be_processed();