我有一个函数动作钩子,它从我们的数据库中收集订阅。我想使用它,以便我可以在页面上显示订阅,但我也想在另一个计算新订阅价格的函数中使用此函数。这可能吗?
我的代码看起来有点像
add_action( 'wp_ajax_get_get_subs_with_type', 'get_subs_with_type' );
add_action( 'wp_ajax_nopriv_get_get_subs_with_type', 'get_subs_with_type' );
function get_subs_with_type($sub_type) {
$subs = //get alot of info from database......
echo $subs;
}
但我也想在return
语句而不是echo
中使用此函数,以便在另一个函数中使用。
functon calc_subs(){
$subs = get_subs_with_type();
return $subs[1]->price + 1;
}
那么我可以使用绑定到动作钩子的函数作为“普通”函数吗?或者我该怎么办?
编辑:
如果没有这样做的好方法,我做了一个小的hacky解决方案:
add_action( 'wp_ajax_get_get_subs_with_type', 'get_subs_with_type' );
add_action( 'wp_ajax_nopriv_get_get_subs_with_type', 'get_subs_with_type' );
function get_subs_with_type($sub_type) {
$subs = get_sub_from_db()
echo $subs;
}
function get_sub_from_db() {
$subs = //get alot of info from database......
return $subs;
}
现在我也可以在我的其他功能中使用get_sub_from_db()
。
functon calc_subs(){
$subs = get_sub_from_db();
return $subs[1]->price + 1;
}
你怎么看待这个?
答案 0 :(得分:1)
您可以执行以下操作:
/**
* Returns bla bla bla
* @return array
*/
function get_subs_with_type($sub_type) {
$subs = //get alot of info from database......
return $subs;
}
add_action( 'wp_ajax_get_get_subs_with_type', function () {
echo get_subs_with_type();
});
但请记住,在使用anonymous
功能时,您无法使用remove_action删除此操作。
答案 1 :(得分:0)
您提出的解决方案,通过创建两个不同的功能,一个返回数据库调用&另一个叫第一个看起来很不错。
在将所有这些信息回显给ajax处理程序之后,不要忘记添加wp_die();
函数。这是立即终止任何ajax调用并返回正确响应所必需的。