如何将多个用户关联到一个帖子?

时间:2013-08-09 作者:Aaron

我有一个网站,我们正在建设1600个“商业列表”,这些列表是定制的帖子类型。我们的问题是,虽然每个职位/公司只需要一个“编辑”,但有时会有多个用户(员工)与职位/公司关联。

这样做的最大原因是将用户与特定的企业分组,这反过来又用于电子邮件新闻稿,以及整体联系信息(仅在后端由管理员查看)。

所以有没有一种方法可以将多个用户关联到一个帖子?基本上,我们的客户希望能够进入一家公司的简介(即自定义帖子),并查看该公司的所有员工。

有什么想法?多个作者发布插件或黑客我们可以做什么?

1 个回复
最合适的回答,由SO网友:Stephen M. Harris 整理而成

除非所有这些员工都需要登录Wordpress,否则将员工实现为自定义职位类型(又称CPT)可能更有意义。一旦他们被定义为CPT,您就可以将wach员工与公司联系起来。

正如@swisspedy在评论中提到的,一种方法是Posts 2 Posts 插件。虽然我是一个帖子迷,但事实上editing code 可能不需要定义这些关系。这个Types 插件允许您从仪表板管理CPT关系,但它的功能集还存在一些不足之处。

设置员工CPT后(在代码中,通过类型插件或其他方法),需要定义业务和员工CPT之间的关系。我找到了Advanced Custom Fields 具有强大的功能和非常用户友好的界面。它不仅可以帮助您定义关系,还可以让您自定义员工选择器在“编辑业务”屏幕上的显示方式/位置。(另一方面,类型插件允许您通过“编辑业务”屏幕动态创建员工,只需输入员工姓名即可)。

下面是一个代码示例functions.php 要使用Posts 2 Posts插件完成此操作,请执行以下操作:

// Create business/employee relationship
add_action( \'p2p_init\', \'register_p2p_connections\' );
function register_p2p_connections(){
    p2p_register_connection_type(
        array(
             \'name\'           => \'business_to_employee\',
             \'from\'           => \'business\',
             \'to\'             => \'employee\',
             \'title\'          => array(
                 \'from\' => \'Employees\',
                 \'to\'   => \'Employer\'
             ),
             \'admin_column\'   => \'to\',
             \'admin_dropdown\' => \'to\',
             \'fields\'         => array(
                 \'title\' => array(
                     \'title\'   => \'Position\',
                     \'default\' => \'\'
    ))));
}

// Auto-publish posts created via P2P box are drafts (they default as drafts).
add_filter( \'p2p_new_post_args\', \'p2p_published_by_default\', 10, 2 );
function p2p_published_by_default( $args, $ctype ) {
    $args[\'post_status\'] = \'publish\';
    return $args;
}
要在查看业务职位时列出员工,请在single-business.php 模板,您可以添加如下代码:

// Find connected employee
$connected = new WP_Query( array(
  \'connected_type\' => \'business_to_employee\',
  \'connected_items\' => get_queried_object(),
  \'nopaging\' => true,
) );
// Display connected employees
if ( $connected->have_posts() ) : ?>
    <h3>Employees:</h3>
    <ul>
    <?php while ( $connected->have_posts() ) : $connected->the_post(); ?>
        <li><?php 
        the_title();
        $position = p2p_get_meta( $post->p2p_id, \'position\', true ); 
        echo ( empty($position) ? \'\' : ", $position" );
        ?></li>
    <?php endwhile; ?>
    </ul><?php 
endif;
// Restore original (business) post data
wp_reset_postdata();

结束

相关推荐

Plugins_url(‘’,__FILE__)!=带有sym链接的WP_plugin_URL

对于我的众多网站之一,plugins/plugin-name 是指向的符号链接universal-install/wp-content/plugins/plugin-name.echo WP_PLUGIN_URL 显示我期望的内容echo plugins_url(); 显示我期望的内容echo plugins_url(\'\',__FILE__) 显示我期望的内容,后跟指向通用插件目录的绝对路径。我有什么办法可以解决吗echo plugins_url(\'\',__FILE__) 仅返回预期结果?