以下是如何在wp表单中创建自定义智能标记:
function ea_custom_smart_tags( $content, $tag ) {
if( \'my_smart_tag\' == $tag ) {
$value = \'Testing 1 2 3\';
$content = str_replace( \'{\' . $tag . \'}\', $value, $content );
}
return $content;
}
add_filter( \'wpforms_smart_tag_process\', \'ea_custom_smart_tags\', 10, 2 );
我想通过ajax发布一个值,而不是硬编码。
我的jQuery/ajax
:
jQuery.ajax({
type: \'POST\',
url: \'http://localhost:8888/mywebsite/wp-admin/admin-ajax.php\',
data: {
action: \'my_action\',
theTotal: newTotal
},
}).success(function (result) {
alert(result);
});
我的
functions.php
:
function my_action_callback($content, $tag){
if ( \'total\' === $tag ) {
$total = $_POST[\'theTotal\'];
$content = str_replace( \'{total}\', $total, $content );
}
return $content;
}
add_action( \'wp_ajax_my_action\', \'my_action_callback\' );
add_filter( \'wpforms_smart_tag_process\', \'my_action_callback\', 10, 2 );
但这给了我一个错误:
Uncaught ArgumentCountError:参数太少,无法执行my\\u action\\u callback(),传入了1个,需要正好2个
SO网友:cjbj
这个错误是不言而喻的。您的最后一行是:
add_action( \'wp_ajax_my_action\', \'my_action_callback\' );
add_filter( \'wpforms_smart_tag_process\', \'my_action_callback\', 10, 2 );
该操作正在调用与筛选器相同的函数。但是过滤器传递两个变量,而操作只传递一个。函数本身需要两个变量:
function my_action_callback($content, $tag)
因此,如果通过(ajax)操作调用该函数,就会出现此错误。你必须通过
$tag
也可以通过ajax调用。否则
my_action_callback
无论如何都不会做任何事,因为它要求
$tag
未来
\'total\'
. 或者你可以放弃
$tag
作为一个变量,因为它并没有做很多事情。
更新:您还可以PHP
在函数调用中添加默认值会更宽容一些:
my_action_callback($content=\'\', $tag=\'\')