【问题标题】:Using wp_insert_post() - creates duplicates使用 wp_insert_post() - 创建重复项
【发布时间】:2017-11-28 11:22:39
【问题描述】:

我正在动态地将一个 CPT 添加到另一个 CPT。当使用wp_insert_post() 时,它会在我add_action('init', 'function_name'); 时创建重复项,知道使用什么钩子来简单地添加它们:

function cpt_to_cpt(){    
// Grab posts
    $args =  array(
        'post_type'     => ' custom_type1 ',
        'order'         =>  'ASC',
        'post_status'   =>  'publish',
        'numberposts'   => -1,
        );

    $posts = get_posts($args);

    foreach ( $posts as $post ) {  
        wp_insert_post(array(
            'post_type'     =>  'custom_type2',
            'post_title'    =>  $post->post_title,
            'post_date'     =>  $post->post_date,
            'post_author'   =>  $post->post->author,
            'post_status'   =>  'publish',
            )
         );
      }
add_action('init', 'cpt_to_cpt');

【问题讨论】:

标签: php wordpress custom-post-type


【解决方案1】:

尝试使用:

wp_loaded

add_action('wp_loaded', 'cpt_to_cpt');

wp

add_action('wp', 'cpt_to_cpt')

【讨论】:

  • 使用add_action('wp', 'cpt_to_cpt') 谢谢。使用条件修改代码:if ( !get_page_by_title($post->post_title, OBJECT, 'custom_type2') )
【解决方案2】:

WordPress initwp_loaded 钩子在“加载”阶段触发。这意味着它们在刷新页面时都可以触发不止一次。

解决方案 1

您可以使用另一个稍后触发的钩子。

wp 钩子,例如,在“处理”阶段触发并且应该只运行一次。

add_action('wp', 'cpt_to_cpt');

优先顺序:init?wp_loaded?wp

解决方案 2

如果你真的想使用init 钩子并确保它会运行一次。你可以使用下面的sn-p。

function cpt_to_cpt() {
    $runtime = 'run_only_01;
    if (get_option('my_run_only_once_option') != $runtime) {
        $updated = update_option('my_run_only_once_option', $runtime);
        if ($updated === true) {
            // do some stuff
        }
    }
}
add_action('init', 'cpt_to_cpt');

它将在您的wp_option 表上创建一个选项。最后,您需要手动(在您的数据库上)或在您的代码中删除该选项。

delete_option('my_run_only_once_option');

解决方案 3

也许创建多个帖子或 CPT(自定义帖子类型)的最佳专业解决方案应该是使用 wp-cli(WordPress 命令行界面)。

请在此处查看文档:https://developer.wordpress.org/cli/commands/post/

【讨论】:

    猜你喜欢
    • 2021-04-08
    • 1970-01-01
    • 2014-12-04
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    相关资源
    最近更新 更多