微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多用户角色到自定义帖子类型

如何解决多用户角色到自定义帖子类型

我已经创建了一个CPT,issue_chapter和一个新的用户翻译器。现在如何在此CPT中添加下拉列表的翻译列表? “作者”和“翻译”都应该在那里。

我已经创建了一个MetaBox

add_Meta_Box( 
        'translator','Translator','zc_translator_Meta_Box_callback','issue_chapter','advanced','high' );

function zc_translator_Meta_Box_callback( $post ) {
$role = 'translator';

$query_users_ids_by_role = array(
    'field' => 'id','role' => $role
);

$array_of_users_ids = get_users( $query_users_ids_by_role );

$users_ids_list = implode( ',',$array_of_users_ids );

$query_for_dropdown = array(
    'include' => $user_ids_list,);

wp_dropdown_users( $query_for_dropdown );
}

现在如何保存值? 谢谢。

解决方法

这是解决方案。谢谢。

add_meta_box( 'the_translator','Translator','zc_the_translator_callback','issue_chapter','advanced','high' 
    );

add_action( 'save_post','zc_save_the_translator_data' );

function zc_the_translator_callback( $post ){
wp_nonce_field( 'zc_save_the_translator_data','zc_the_translator_meta_box_nonce' );
$value = get_post_meta( $post->ID,'_the_translator_value_key',true );
?>

<label for="zc_the_translator_field">Translator</label>
<select name="zc_the_translator_field" id="zc_the_translator_field">
    <option value="0">-- Select Translator --</option>
    <?php
    $args = array(
        'role' => 'translator'
    );
    $user_list = get_users($args);
    foreach( $user_list as $user ) : setup_postdata($post); ?>
        <option value="<?php echo $user->ID; ?>" <?php selected($value,$user->ID); ?>><?php echo $user->user_nicename ; ?></option>
    <?php endforeach; ?>
</select>

<?php   
}

function zc_save_the_translator_data( $post_id ){
if( !isset( $_POST['zc_the_translator_meta_box_nonce']) ){
    return;
}
if( !wp_verify_nonce( $_POST['zc_the_translator_meta_box_nonce'],'zc_save_the_translator_data' ) ){
    return;
}
if( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ){
    return;
}
if( !current_user_can( 'edit_post',$post_id ) ){
    return;
}
if( !isset( $_POST['zc_the_translator_field']) ){
    return;
}
$my_data = sanitize_text_field( $_POST['zc_the_translator_field'] ) ;
update_post_meta( $post_id,$my_data );
}

要检索该值,请使用此

<?php echo get_post_meta( $post->ID,true ); ?>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。