如果我问愚蠢的问题,我很抱歉,因为我不是代码/ php专家?
我使用gravityview来过滤并显示值的重力。
[gravityview id =“111”search_field =“11”search_value =“xyzes”]
现在我想动态更改search_value AS“当前登录用户”
所以我尝试制作新的SHORTCODE,但不是好工作或不好主意
add_shortcode( 'customcode' , 'wp_get_current_user_func' );
function wp_get_current_user_func( $atts ) {
$current_user = wp_get_current_user();
return do_shortcode('[gravityview id="1111" search_field="16" search_value="$current_user = wp_get_current_user();"]');
}
我的请求请告诉我什么是正确的代码,或者在后端我有什么方法可以做更改主题文件?
非常感谢你提前
答案 0 :(得分:0)
你足够近了。这是你应该怎么做的:
add_shortcode( 'customcode' , 'wp_get_current_user_func' );
function wp_get_current_user_func( $atts ) {
$current_user = wp_get_current_user();
$user_login = $current_user->user_login;
//return do_shortcode('[gravityview id="1111" search_field="16" search_value=".$user_login."]');
$shortcode = sprintf(
'[gravityview id="%1$s" search_field="%2$s" search_value="%3$s"]',
"1111",
"16",
$user_login
);
echo do_shortcode( $shortcode );
}
您缺少从函数$current_user->user_login
wp_get_current_user()
$user_login = $current_user->user_login;
您还可以打印出其他值,如下例所示:
<?php
$current_user = wp_get_current_user();
/**
* @example Safe usage: $current_user = wp_get_current_user();
* if ( !($current_user instanceof WP_User) )
* return;
*/
echo 'Username: ' . $current_user->user_login . '<br />';
echo 'User email: ' . $current_user->user_email . '<br />';
echo 'User first name: ' . $current_user->user_firstname . '<br />';
echo 'User last name: ' . $current_user->user_lastname . '<br />';
echo 'User display name: ' . $current_user->display_name . '<br />';
echo 'User ID: ' . $current_user->ID . '<br />';
?>