使用自定义元用户数据在WordPress中运行查询

时间:2018-10-08 作者:MFWebMaster

我已经将自定义用户元数据添加到WordPress用户配置文件中,下面是我用来添加此数据的代码。这部分代码似乎工作正常,我对此没有问题。

<?php

////////////////////////////////////////////////////////////////////
//   Adding a Field to Wordpress User Profile
//   http://scriptbaker.com/adding-custom-fields-to-wordpress-user-profile-                    
and-add-new-user-page/
////////////////////////////////////////////////////////////////////

function custom_user_profile_fields($user){
    if(is_object($user))
{
    $company = esc_attr( get_the_author_meta( \'company\', $user->ID ) );
    $mf_group = esc_attr( get_the_author_meta( \'mf_group\', $user->ID ) );
}
else
{
    $company = null;
    $phone =  null;
    $insurens =  null;
}
?>
<h3>Extra profile information</h3>
<table class="form-table">
    <tr>
        <th>
            <label for="company">Company Name</label>
        </th>
        <td>
            <input type="text" class="regular-text" name="company" value="<?php echo $company; ?>" id="company" /><br />
        </td>

        <th>
            <label for="phone">MF Group</label>
        </th>
        <td>
            <input type="text" class="regular-text" name="mf_group" value="<?php echo $mf_group; ?>" id="mf_group" /><br />
        </td>
    </tr>
</table>

<?php
}
add_action( \'show_user_profile\', \'custom_user_profile_fields\' );
add_action( \'edit_user_profile\', \'custom_user_profile_fields\' );
add_action( "user_new_form", "custom_user_profile_fields" );

function save_custom_user_profile_fields($user_id){
# again do this only if you can
if(!current_user_can(\'manage_options\'))
    return false;

# save my custom field
update_user_meta($user_id, \'company\', $_POST[\'company\']);
update_user_meta($user_id, \'mf_group\', $_POST[\'mf_group\']);
}
add_action(\'user_register\', \'save_custom_user_profile_fields\');
add_action(\'profile_update\', \'save_custom_user_profile_fields\');


////////////////////////////////////////////////////////////////////
// add columns to User panel list page
////////////////////////////////////////////////////////////////////

function add_user_columns($column) {
$column[\'company\'] = \'Company\';
$column[\'mf_group\'] = \'MF Group\';

    return $column;
}
add_filter( \'manage_users_columns\', \'add_user_columns\' );

//add the data
function add_user_column_data( $val, $column_name, $user_id ) {
    $user = get_userdata($user_id);

    switch ($column_name) {
        case \'company\' :
            return $user->company;
            break;
        default:
    }
    switch ($column_name) {
        case \'mf_group\' :
            return $user->mf_group;
                break;
        default:
    }
   return;
}
add_filter( \'manage_users_custom_column\', \'add_user_column_data\', 10, 3 );

?>
当我想使用此元数据来运行查询时,就会出现问题。下面是我想在哪里使用这些元数据的一个例子。

<?php
$current_user = wp_get_current_user();
?>
<div class="row">
         <div class="col-md text-center">
          <h2>
              Welcome To your Dashboard 
              </h2>
         </div>
</div>
<div class="row">
            <div class="col-md text-center  bg-success">
                        All
                        <?php
                                        $args = array(
                                    \'post_type\'     => \'maintenances\',
                                    \'post_status\'   => \'published\',
                                        \'taxonomy\'      => \'maintenance-type\',
                                    \'term\'          => \'All\',
                                    \'numberposts\'   => -1,
                                    \'author\'        => $current_user->ID,
                                    \'company\'       => $current_user->company,
                                    \'mf_group\'      => $current_user->mf_group,
                                    );
                                    $num_1 = count( get_posts( $args ) );
                                    $sum_total = $num_1 / $num_1 * 100;
                        ?>
                        <h2 class="align-middle">
                                    <?php echo $num_1 ;?><br />
                                    100 %<br />
                        </h2>
////////////////////////////////////////////////////////////////

\'公司\'=>$当前用户->公司,

“mf\\U组”=>$当前用户->mf\\U组,

///////////////////////////////////////////////////////////////////

这行代码似乎不起作用

如果我能像这样重复这两行

$client             =   $current_user->company;

$mfgroup            =   $current_user->mf_group;
 //////////////////////////////////////<br/>

             Cleint <strong><?php echo $client ?></strong><br/>

             Mf Group <strong><?php echo $mfgroup ?></strong><br/>



             ///////////////////////////////////////<br/>
它确实会从数据库返回正确的值

有谁能告诉我如何使用这些海量数据来运行查询谢谢

1 个回复
SO网友:Krishna Joshi

wp_get_current_user() 不会为用户返回所有数据,应尝试使用get_user_meta(). 按以下方式尝试

$company = get_user_meta($current_user->ID,\'company\');
$mf_group = get_user_meta($current_user->ID,\'mf_group\');
在你的帖子循环中,将这两行更改如下

\'company\'       => $company[0],
\'mf_group\'      => $mf_group[0],
希望这有帮助。

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post