在短码中使用ADD_ACTION(重力形式-WordPress)

时间:2019-02-20 作者:Timama

我有一个短代码。有了这个,我得到了一个公式$num\\u formular的ID(数字)。然后,有了这个,我必须发送数据库中的所有数据。

当我运行以下代码时,它可以工作:

function ss_get_appbenutzer($atts, $content = null){
//global $num_formular;
/* Récupération du numéro du formulaire*/   
$atts = shortcode_atts(
    array(
        \'num_formular\' => \'NUM_formular\'
    ), $atts);
$num_formular = $atts[\'num_formular\']; 
echo \'NUM Formulaire DANS SHORTCODE =\'.$num_formular;
}
add_shortcode( \'app-benutzer\' , \'ss_get_appbenutzer\' );
add_action(\'gform_after_submission_192\', \'msk_gform_process_user_registration_192\', 10, 2);

function msk_gform_process_user_registration_192 ($entry, $form) {
echo \'PASSAGE DANS FONCTION msk_gform_process_user_registration_MB --> ok \';
}};
并打印:

NUM Formulaire DANS SHORTCODE=192PASSAGE DANS FNCTION msk\\u gform\\u process\\u user\\u registration\\u MB-->确定

所以它工作了,数据都在数据库中。

但是,我得到了公式的数量,因为它将是不同数量的公式。

所以,我需要将$num\\u公式作为变量。然后我必须像这样使用call add\\u操作:

function ss_get_appbenutzer($atts, $content = null){
//global $num_formular;
/* Récupération du numéro du formulaire*/   
$atts = shortcode_atts(
    array(
        \'num_formular\' => \'NUM_formular\'
    ), $atts);
$num_formular = $atts[\'num_formular\']; 
echo \'NUM Formulaire DANS SHORTCODE =\'.$num_formular;
}
add_shortcode( \'app-benutzer\' , \'ss_get_appbenutzer\' );

$gform = "\'gform_after_submission_".$num_formular."\'";
add_action($gform, \'msk_gform_process_user_registration_MB\', 10, 2);

function msk_gform_process_user_registration_MB ($entry, $form) {
echo \'PASSAGE DANS FONCTION msk_gform_process_user_registration_MB --> ok \';
}};
但是$num\\u公式在ss\\U get\\u appbenutzer函数之外是未知的。我尝试使用global,但没有找到有效的方法。我意识到全球化并不是一个好的解决方案。

然后,我尝试在ss\\u get\\u appbenutzer函数中包含add\\u操作,如下所示(我获取了有效的代码)

function ss_get_appbenutzer($atts, $content = null){
//global $num_formular;
/* Récupération du numéro du formulaire*/   
$atts = shortcode_atts(
    array(
        \'num_formular\' => \'NUM_formular\'
    ), $atts);
$num_formular = $atts[\'num_formular\']; 
echo \'NUM Formulaire DANS SHORTCODE =\'.$num_formular;
add_action(\'gform_after_submission_192\', \'msk_gform_process_user_registration_192\', 10, 2);
}

add_shortcode( \'app-benutzer\' , \'ss_get_appbenutzer\' );

function msk_gform_process_user_registration_192 ($entry, $form) {
echo \'PASSAGE DANS FONCTION msk_gform_process_user_registration_MB --> ok \';
}};
但它只打印NUM Formulaire DANS SHORTCODE=192

这意味着放置在ss\\u get\\u appbenutzer函数中的add\\u操作无效(或未调用)。

你能给我一些提示让这个add\\u操作正常工作吗?

我真的很笨,我尝试了很多东西,现在都不知道该去哪里搜索了。

非常感谢你的帮助

蒂马马

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

在评论中经过一些讨论后,我可以推测这就是你的情况:

您可以在提交表单时以某种方式处理用户注册您试图做的是向页面添加一个具有匹配表单ID的短代码,以便在提交表单时对该表单进行处理。

这有几个问题:

短代码用于在帖子或页面中显示动态contnet。它们不适用于表单处理等后端事件here. 在您的情况下,您可以将您的注册处理放入process_feed 自定义提要的方法。

然而,正如您所建议的,创建附加提要需要大量的工作。因此,我将建议一种解决方法:

在要处理的表单中添加隐藏字段gform_after_submission ,并检查此隐藏字段。如果存在隐藏字段,请处理注册Hidden field 您需要处理的表单。给它贴上一个对你有意义的标签。我假设“App Benutzer”,仅基于短代码名称。

下面是您的代码:

function msk_gform_process_user_registration_MB( $entry, $form ) {
    $fields = $form[\'fields\'];

    // Check every field in the form.
    foreach ( $fields as $field ) {
        // If our hidden field has been added to this form, process the user registration.
        if ( $field->label = \'App Benutzer\' ) {
            // Process user registration here.
        }
    }
}
add_action( \'gform_after_submission\', \'msk_gform_process_user_registration_MB\', 10, 2 );
因此,这就解决了让非技术用户知道Gravity表单应该为哪些表单处理用户注册的问题:他们只需要添加一个标签为“App Benutzer”的隐藏字段。

相关推荐

Prevent loading of functions

我使用了一个主题,其中包括名为“Sharethis”的服务的共享功能和字体真棒。据我所知,函数是从函数中的以下行加载的。php。TT\\u队列::add\\u css(数组(“//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css”);TT\\u排队::add\\u js(array(\'https://ws.sharethis.com/button/buttons.js\'));如何使用子函数(因为父函数中的更改将在更新