如何使用快捷码在特定页面上显示一些选定的用户元数据?

时间:2013-01-20 作者:Iurie

我需要在一些特定页面上为一些用户显示一些选定的用户元数据(不是全部)。

Wordpress Codex 第页,共页get_user_meta() 函数我们有以下示例(user\\u id=9):

<?php
  $all_meta_for_user = get_user_meta( 9 );
  print_r( $all_meta_for_user );
?>
此示例的结果:

Array ( [first_name] => Array ( [0] => Tom ) [last_name] => Array ( [0] => Auger) [nickname] => Array ( [0] => tomauger ) [description] => etc.... )
和aNote (简称):

。。。您可能希望对get\\u user\\u meta()的结果运行一个简单的array\\u map(),以便只获取每个结果的第一个索引(这模拟了提供$key时$single参数的作用:

if( $all_meta_for_user = get_user_meta( $user_id ) ) 
    $all_meta_for_user = array_map( function( $a ){ return $a[0]; }, get_user_meta( $user_id ) );

  print_r( $all_meta_for_user );
结果:

Array ( [first_name] => Tom [last_name] => Auger [nickname] => tomauger [description] => etc.... )

My question is:

如何将其放在一个功能中,例如,显示带有短代码的用户姓氏和名字(但我真的需要更多的用户元数据)?

我是什么意思?在一个特定的页面上,我们放置了一个带有用户ID的短代码,相关函数必须返回该用户的每个选定键的元数据。这可能吗?有人能帮我吗?

2 个回复
最合适的回答,由SO网友:Bainternet 整理而成

下面是最简单的短代码,可以帮您完成这项工作

add_shortcode(\'USER_META\', \'user_meta_shortcode_handler\');
/**
 * User Meta Shortcode handler
 * usage: [USER_META user_id=1 meta="first_name"]
 * @param  array $atts   
 * @param  string $content
 * @return stirng
 */
function user_meta_shortcode_handler($atts,$content=null){
    return esc_html(get_user_meta($atts[\'user_id\'], $atts[\'meta\'], true));
}
用法:

[USER_META user_id=1 meta="first_name"]
[USER_META user_id=1 meta="last_name"]

SO网友:Iurie

下面您可以看到@Bainternet的改编代码(谢谢!)我当前使用的。现在,我可以只使用一行/短代码显示一个大列表,其中只包含我需要的自定义用户元数据,按自定义顺序排列,并针对每种类型的输入(文本字段输入或文本区域)专门设置格式。如果我可以一次获取并显示(HTML格式)所有用户元数据,可能代码看起来会更好,但这对我来说太难了。这里只是我需要显示的自定义用户元数据列表的摘录,实际上它更长。

add_shortcode( \'user_meta\', \'user_meta_shortcode_handler\' );
/**
 * User Meta Shortcode handler
 * usage: [user_meta user_id=1]
 * @param  array $atts   
 * @param  string $content
 * @return string
 */
function user_meta_shortcode_handler( $atts, $content=null ) {
    $output = "";
    echo \'<div class="academic">\';
    echo \'<h3>Teaching position</h3>\';
    echo esc_html( get_user_meta( $atts[\'user_id\'], \'teaching_position\', true ) );
    echo \'<h3>Scientific title</h3>\';
    echo esc_html( get_user_meta( $atts[\'user_id\'], \'scientific_title\', true ) );
    echo \'<h3>Publications</h3>\';
    echo wpautop( get_user_meta( $atts[\'user_id\'], \'publications\', true ) );
    echo \'</div><!-- .academic -->\';
}

结束

相关推荐

qtranslate arabic shortcode?

我在我的网站上使用了qTranslate。四种语言选择。English Russian Turkish Arabic 但阿拉伯语不行。我尝试了以下url:site.com/ar 但它仍然不起作用。显示如下错误:警告:无法修改标题信息-标题已由/home/useruser/public\\u html/www.site.com/blog/wp-content/themes/tema/index.php:1)在/home/useruser/public\\u html/www