如何将我的wordpress动作钩子函数重用为“普通”函数

时间:2017-08-10 11:25:10

标签: php wordpress

我有一个函数动作钩子,它从我们的数据库中收集订阅。我想使用它,以便我可以在页面上显示订阅,但我也想在另一个计算新订阅价格的函数中使用此函数。这可能吗?

我的代码看起来有点像

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;
}

你怎么看待这个?

2 个答案:

答案 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调用并返回正确响应所必需的。