从复选框中检索和显示用户元值

时间:2017-12-13 作者:Andrew

我需要为球队教练创建一个页面,以查看自定义帖子类型中的球员数据。使用一种称为“团队”的自定义分类法将玩家分配到“团队”

我为自定义用户元设置了复选框,该元由一个称为“团队”的自定义分类法动态填充。

我需要在一个页面上显示用户配置文件中的所有选中选项,并带有指向相应分类页面的链接。

例如:。

[十] A队

[十] B队

[]团队C

[十] D组

在页面上,如果在用户配置文件中选中了团队名称(例如团队A)和永久链接,则会向每个团队显示这些名称。

如何做到这一点?

Function to create and save Custom User Meta Fields from Taxonomy

function coach_team_access( $user ) {
    $teams = get_terms(\'team\', array(\'hide_empty\' => false));
    $user_teams = get_the_author_meta( \'user_teams\', $user->ID );
    ?>
    <table class="form-table">
        <tr>
            <th>Team Access:</th>
            <td>
        <?php
        if ( count( $teams ) ) {
            foreach( $teams as $team ) { ?>
            <p><label for="user_iteams_<?php echo esc_attr( $team->slug); ?>">
                <input
                    id="user_teams_<?php echo esc_attr( $team->slug); ?>"
                    name="user_teams[<?php echo esc_attr( $team->term_id ); ?>]"
                    type="checkbox"
                    value="<?php echo esc_attr( $team->term_id ); ?>"
                    <?php if ( in_array( $team->term_id, $user_teams ) ) echo \' checked="checked"\'; ?> />
                <?php echo esc_html($team->name); ?>
            </label></p><?php
            }
        } ?>
            </td>
        </tr>
    </table>
    <?php
}
add_action( \'show_user_profile\', \'coach_team_access\' );
add_action( \'edit_user_profile\', \'coach_team_access\' );

    // store access
    function coach_team_access_save( $user_id ) {
        if ( !current_user_can( \'edit_user\', $user_id ) )
            return false;
        update_user_meta( $user_id, \'user_teams\', $_POST[\'user_teams\'] );
    }
    add_action( \'personal_options_update\', \'coach_team_access_save\' );
    add_action( \'edit_user_profile_update\', \'coach_team_access_save\' );

1 个回复
SO网友:David Sword

使用创建包含此信息的空白管理页add_menu_page()add_submenu_page().

让您的所有团队get_terms() 以后使用

让所有玩家get_posts(), 然后做一个foreach()

在循环中,使用wp_get_post_terms() 要检索玩家术语,

使用get_terms() 之前创建的值,以循环查看团队列表。

添加if语句以查看当前玩家是否有此术语,然后使用get_term_link() 到超链接,并将其标记为选中

结束

相关推荐