我需要在一些特定页面上为一些用户显示一些选定的用户元数据(不是全部)。
在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.... )
和a
Note (简称):
。。。您可能希望对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的短代码,相关函数必须返回该用户的每个选定键的元数据。这可能吗?有人能帮我吗?
最合适的回答,由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 -->\';
}