在用户注册后使用wp_INSERT_POST中的POST ID更新POST_META POST_NAME

时间:2015-09-02 作者:Paxjah

我正在创建一个函数,在用户注册时为其创建一个页面。创建的帖子属于某个类别。这些是标准帖子,不是自定义帖子类型。

创建帖子后,我想获取ID并用它覆盖post\\u名称。

到目前为止,我有以下内容,创建帖子:

function add_memberzone_page( $user_id ) {

    global $wpdb;

    $user = get_userdata( $user_id );

    $where = get_posts_by_author_sql( \'post\', true, $user_id );
    if( $wpdb->get_var( \'SELECT COUNT(*) FROM $wpdb->posts $where\' ) >= 1 ) return;

    $user_page = array(
        \'post_title\' => $user->first_name,
        \'post_type\' => \'post\',
        \'post_content\' => \'\',
        \'post_excerpt\' => \'\',
        \'post_category\' => \'21\',
        \'post_author\' => $user_id,
        \'post_status\' => \'publish\',
    );

    wp_insert_post( $user_page );
}
add_action( \'user_register\', \'add_memberzone_page\', 999 );
更新帖子:

function update_memberzone_page( $post_id ) {

    global $wpdb;

    $post_id = wp_insert_post( $user_page );

    $post_update = array(
        \'post_name\' => $post_id,
    );

    update_post_meta( $post_update );
}
add_action( \'save_post\', \'update_memberzone_page\', 10, 3 );
非常感谢您能帮助我朝着正确的方向前进!

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

不需要这两个函数/挂钩-只需使用第一个,并添加以下功能:

if ( $post_id = wp_insert_post( $user_page ) ) {
    wp_update_post(
        array(
            \'ID\'        => $post_id,
            \'post_name\' => $post_id,
        )
    );
}

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在