我有一个短代码。有了这个,我得到了一个公式$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操作正常工作吗?
我真的很笨,我尝试了很多东西,现在都不知道该去哪里搜索了。
非常感谢你的帮助
蒂马马
最合适的回答,由SO网友:Jacob Peattie 整理而成
在评论中经过一些讨论后,我可以推测这就是你的情况:
您可以在提交表单时以某种方式处理用户注册在CMS中,您需要一种方法来指定此处理需要用于哪些形式您试图做的是向页面添加一个具有匹配表单ID的短代码,以便在提交表单时对该表单进行处理。
这有几个问题:
短代码用于在帖子或页面中显示动态contnet。它们不适用于表单处理等后端事件提交重力表单时,将在重新加载页面内容之前对其进行处理。这意味着,尝试钩住表单提交钩子为时已晚,因为它已经运行并完成开发这一功能的“正确”方法是开发一个“feed”,Gravity表单就是这样支持开发人员通过UI向特定表单添加功能的。创建自定义提要类型的文档可用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”的隐藏字段。