最合适的回答,由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();