【问题标题】:How to call add_action after another add_action perform如何在另一个 add_action 执行后调用 add_action
【发布时间】:2019-06-21 11:09:09
【问题描述】:

我需要一个接一个地运行钩子我已经尝试了第一个钩子工作但另一个钩子从未调用过的代码。我正在制作 ajax 请求 ajax 请求成功但部分操作函数(测试)没有调用。

PHP / Wordpress

   <?php
    add_action( 'wp_ajax_my_action', 'my_action' );
    add_action('wp_ajax_my_action' , 'test');
    //add_action('my_action' , 'test');
    function my_action() {
    //global $wpdb; // this is how you get access to the database

    $one = $_POST['valone'];
    $two = $_POST['valtwo'];

    echo $sum = $one+$two;

    //test();

    wp_die(); // this is required to terminate immediately and return a proper response
    }
    function test(){
    echo "Hello World";
    }

【问题讨论】:

    标签: ajax wordpress hook


    【解决方案1】:

    当您在第一个挂钩中使用wp_die 时,您将终止所有代码。这将终止 PHP 执行并停止任何未来的代码运行。本质上,它将停止它试图做的事情并将它所拥有的内容返回给 AJAX 调用。

    【讨论】:

    • 感谢 rply 但是当我再次转移 die() 的 test() 函数顶部时,同样的问题,
    • 您是否从 AJAX 得到任何响应?您是否尝试过更改优先级?例如add_action( 'wp_ajax_my_action', 'my_action', 10 );add_action('wp_ajax_my_action' , 'test', 20);
    • 是的,我得到了 my_action 函数的响应,但即使我给予了优先级,测试函数也不起作用。
    • 在没有权限的情况下添加相同的操作时,您是否尝试过相同的操作?您添加的操作只会在用户登录时运行。
    【解决方案2】:

    您可以尝试从您的第一个操作中调用相同的操作,如下所示,

    add_action( 'wp_ajax_my_action', 'my_action' );
    
    function my_action() {//global $wpdb; // this is how you get access to the database
    $one = $_POST['valone'];
    $two = $_POST['valtwo'];
    echo $sum = $one+$two;
    //test();
    add_action('wp_ajax_my_action' , 'test');
    wp_die(); // this is required to terminate immediately and return a proper response
    }
    function test(){
    echo "Hello World";
    }
    

    希望对你有帮助

    【讨论】:

    • 不,那是行不通的。这是因为您在 wp_die 之后添加了测试功能。
    • 可以使用exit;而不是 wp_die();
    猜你喜欢
    • 2015-07-17
    • 2014-02-03
    • 2015-11-12
    • 1970-01-01
    • 2014-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多