向Dokan AJAX类添加函数

时间:2017-08-11 作者:Damir Gasparlin

我已经安装了Dokan插件。它有Dokan\\u Ajax类,带有公共函数add\\u shipping\\u tracking\\u info。

我试图在运气不佳的情况下替换该函数,因此决定在我的插件中添加新函数,以便在Dokan中使用ajax。

使用stackexchange和其他地方描述如何扩展类的答案,这都不成功。希望有人能指出我做错了什么。非常感谢。

Dokan Ajax类文件:

    class Dokan_Ajax {

        /**
         * Singleton object
         *
         * @staticvar boolean $instance
         * @return \\self
         */
        public static function init() {

            static $instance = false;

            if ( !$instance ) {
                $instance = new self;
            }

            return $instance;
        }

        /**
         * Init ajax handlers
         *
         * @return void
         */
        function init_ajax() {
            //withdraw note
            $withdraw = Dokan_Admin_Withdraw::init();

            add_action( \'wp_ajax_dokan_add_shipping_tracking_info\', array( $this, \'add_shipping_tracking_info\' ) );

            more add action/filters......
        }

public function add_shipping_tracking_info() {

        .... original dokan function code ....
    }
    ...... more public functions.....
    }
我的插件代码:

class My_Dokan_Ajax extends Dokan_Ajax {

    function __construct() {

        add_action( \'wp_ajax_dokan_add_shipping_tracking_info\', array( $this, \'OWadd_shipping_tracking_info\' ) );
    }

 public static function init() {

        static $instance = false;

        if ( !$instance ) {
            $instance = new My_Dokan_Ajax();
        }

        return $instance;
    }


  /**
     * Add shipping tracking info via ajax
     */
    public function OWadd_shipping_tracking_info() {

.... my function code ....

    }
}
new My_Dokan_Ajax(); 
我尝试的第二个代码尝试删除现有函数并添加新函数:

class My_Dokan_Ajax extends Dokan_Ajax {

  /**
     * Add shipping tracking info via ajax
     */
    public function add_shipping_tracking_info() {

        .... my new function code ....
    }
}
remove_action( \'wp_ajax_dokan_add_shipping_tracking_info\',\'Dokan_Ajax::add_shipping_tracking_info\' );
add_action( \'wp_ajax_dokan_add_shipping_tracking_info\',\'My_Dokan_Ajax::add_shipping_tracking_info\' );

1 个回复
SO网友:rafsuntaskin

这是Dokan的核心开发人员。对于这种情况,有一种更简单的方法来使用自定义函数。这dokan_add_shipping_tracking_info 可以在此模板中找到操作:/rafsuntaskin.com/wp-content/plugins/dokan/templates/orders/details.php .

您可以将其复制到主题中,并将操作更改为自定义函数,如下所示:rt_custom_add_shipping_tracking_info 替换dokan_add_shipping_tracking_info然后在主题函数中添加一个自定义的wp-ajax挂钩。phpwp_ajax_rt_custom_add_shipping_tracking_info 并使用自定义函数作为回调函数。

谢谢

结束

相关推荐

加载CSS文件的子主题中的Functions.php中断网站

我创建了一个子主题并创建了一个函数。子主题目录中也具有所需样式的php文件。css文件和我要加载的单独自定义css文件。这是我使用的代码:<? php add_action(\'wp_head\', \'add_landing_css\'); function add_landing_css() { wp_enqueue_style(\'landing_css\', get_stylesheet_directory_uri().\'/landing.cs