注册时创建自定义帖子类型

时间:2016-02-07 作者:tjej2016

我正在努力找到此问题的最佳/快速简单的解决方案:

我有一个插件,可以创建公司,但作为用户存储所有公司信息,因此所有信息都在用户的个人资料中。我有另一个插件(Geo-my-WP),它只搜索帖子/页面/cpt,而不搜索用户(他们有点搜索,但基于地址,而不是其他用户元数据,例如我想要的类别)。

所以我想,如果有一种方法,当用户创建一个概要文件时,会创建一个cpt并保存一些数据,例如地址,可能还会存储类别以及post元数据。看起来有些多余,但我的地理位置插件在没有大量自定义更改的情况下运行良好(如果可能的话)。

现在,如果有可能自动创建cpt并在用户注册时进行更新,我有点厌倦了。

还是其他解决方案?

顺便说一句:我有点需要地理位置我的wp,因为我有其他的cpt,我想在搜索表单中使用。

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

这是行动挂钩user_register 将用户添加到数据库后立即调用。用户id作为参数传递给挂钩。

您可以使用wp_insert_post 在该操作中插入新帖子。你只需要从用户那里获取相关信息并将其添加到帖子中。您可以通过引用返回的帖子ID向创建的帖子添加自定义字段wp_insert_post.

这是一个如何在用户注册时添加自定义帖子类型帖子的示例-您显然需要更改它以满足您的需要,但它应该让您知道该怎么做。

/*
 * Create new custom post type post on new user registration
 */
add_action( \'user_register\', \'wpse_216921_company_cpt\', 10, 1 );
function wpse_216921_company_cpt( $user_id )
{
    // Get user info
    $user_info = get_userdata( $user_id );

    // Create a new post
    $user_post = array(
        \'post_title\'   => $user_info->nickname;
        \'post_content\' => $user_info->description,
        \'post_type\'    => \'your_company_custom_post_type\', // <- change to your cpt
    );
    // Insert the post into the database
    $post_id = wp_insert_post( $user_post );

    // Add custom company info as custom fields
    add_post_meta( $post_id, \'company_id\', $user_info->ID );
    add_post_meta( $post_id, \'company_email\', $user_info->user_email );
}

相关推荐

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

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