首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wp_insert_post()多次触发

wp_insert_post()多次触发
EN

Stack Overflow用户
提问于 2014-08-11 00:13:27
回答 1查看 2.4K关注 0票数 0

我正在构建一个简单的WP插件,应该创建一个新的帖子,并为帖子保存一些元数据。我创建了一个功能函数,并将其连接到'init‘事件,以检查它是否有效。

代码语言:javascript
复制
add_action( 'init', 'my_func' );

function my_func() {

    $my_post = array(
        'post_title'    => 'Some Post Title',
        'post_name'     => 'some-post-title',
        'post_type'     => 'custom-post-type',
        'post_status'   => 'publish'
    );

    $inserted_post_id = wp_insert_post($my_post);

    if($inserted_post_id != 0) {
        add_post_meta($inserted_post_id, 'some-key', 'some-value');
        add_post_meta($inserted_post_id, 'some-other-key', 'some-other-value');
        echo 'SUCCESS';
    } else {
        echo 'ERROR';
    }
}

现在,每当我重新加载管理页面时,我都会得到“成功”消息的回响,我还得到了4-6个名为“”的新帖子,以及postmeta表中的4-6*2个新条目。“成功”消息只回响一次,这意味着函数只运行一次,但我还是多次获得插入数据库的数据。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-11 04:22:14

如果已经存在或不存在,请在插入新帖子之前进行检查。因此,get_page_by_title(“一些帖子标题”) == false,然后只插入新的帖子。

代码语言:javascript
复制
add_action( 'init', 'my_func' );

function my_func()  {
$my_post = '';
if( get_page_by_title('Some Post Title','OBJECT','custom-post-type') == NULL )
$my_post= array(
        'post_title'    => 'Some Post Title',
        'post_name'     => 'some-post-title',
        'post_type'     => 'custom-post-type',
        'post_status'   => 'publish'
);
wp_insert_post( $my_post );
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25234254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档