是否可以在主题中自定义短代码 - 或者 - 制作组合两个短代码的新短代码

时间:2017-10-15 02:35:52

标签: wordpress shortcode gravity-forms-plugin custom-wordpress-pages

如果我问愚蠢的问题,我很抱歉,因为我不是代码/ 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();"]');
}

我的请求请告诉我什么是正确的代码,或者在后端我有什么方法可以做更改主题文件?

非常感谢你提前

1 个答案:

答案 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 />';
?>