如何添加调用函数的快捷码

时间:2011-12-06 作者:Corbula

我正在使用Cimy User Extra Fields 添加更多注册字段。我也在使用Contact Form 7 Dynamic Text Extension 预填充联系人表单字段。

我已经读过,为了能够使用Cimy字段预填充联系人表单,我需要添加一个快捷码。我读过这个here.

他说,您必须添加一个短代码,以调用Cimy用户额外字段中的函数。

Cimy中的函数称为get\\u cimyFieldValue()。

以下是他所指的动态文本扩展代码。

function cf7_get_current_user($atts){
    extract(shortcode_atts(array(
        \'key\' => \'user_login\',
    ), $atts));

    global $current_user;
    get_currentuserinfo();

    $val = $current_user->$key;
    return $val;
}
add_shortcode(\'CF7_get_current_user\', \'cf7_get_current_user\');
如何在函数中添加短代码。php调用get\\u cimyFieldValue(),以便我可以使用来自Cimy的字段填充联系人表单?

谢谢

EDIT:

从下面的答案来看,我已经成功地做到了这一点,但它似乎只在我使用用户id时才起作用。我需要它与当前用户而不是预定义用户一起工作。

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

那么您只是在寻找一个调用现有函数的简单快捷码?

下面将创建您正在寻找的短代码,但无可否认,我还没有使用Cimy User Extra Fields插件对其进行测试。将此添加到functions.php 并尝试一下:

function shortcode_cimyFieldValue( $atts ) {

    global $current_user;
    $user_id = ( is_user_logged_in() ? $current_user->ID : NULL );

    /* 
     * First, check to make sure the get_cimyFieldValue() function
     * exists. This way, if the plugin is not installed the site
     * doesn\'t blow up...
     */
    if( function_exists( \'get_cimyFieldValue\' ) ) {

        // Grab the shortcode parameters
        extract( shortcode_atts( array( 
            \'user\'  => $user_id,
            \'field\' => \'\',
            \'value\' => \'\'
        ), $atts ));

        /* 
         * Call the get_cimyFieldValue() function using any of the
         * user-entered parameters
         */
        if( $user_id != NULL ) {
            return get_cimyFieldValue( $user, $field, $value );
        }
    }
}

// Adds the above function as as shortcode
add_shortcode( \'my_cimy_field\', \'shortcode_cimyFieldValue\' );
这应该允许您调用短代码[my_cimy_field] 通过以下任一方式:

[my_cimy_field field="my_field_name"]

[my_cimy_field field="my_field_name" value="Sample Field Value"]

结束

相关推荐

在我网站的不同部分使用不同大小的缩略图...使用Functions.php?

两年前,在StackOverflow中,有一个有趣的问题,关于在站点的不同部分使用特定的缩略图、小型、中型或大型图像。问题是,available here, 是well answered 其中一位用户Doug Neiner建议使用以下代码:<?php function get_attached_images(){ // This function runs in \"the_loop\", you could run this out of the loop but&#x