WordPress使用ADD_ACTION发送数据

时间:2017-02-16 作者:C.Yasa

我试图在另一个函数中使用一个函数,但我不想编辑核心文件,因此我试图添加带有挂钩的函数,但无法确定如何发送id。

下面您可以看到我是如何做到的,但我正在核心文件中调用我的函数。

这是核心文件中的函数:(我手动添加了我的函数create_submerchant ($_GET[ \'user_id\' ]); 使用该用户的ID)

public function user_row_actions_commit()
    {
        if ( !empty( $_GET[ \'action\' ] ) && !empty( $_GET[ \'user_id\' ] ) ) {

            $wp_user_object = new WP_User( (int) $_GET[ \'user_id\' ] );

            switch ( $_GET[ \'action\' ] ) {
                case \'approve_vendor\':
                    $role = \'vendor\';
                    add_action( \'admin_notices\', array( $this, \'approved\' ) );
                    do_action( \'wcvendors_approve_vendor\', $wp_user_object );
                    create_submerchant ($_GET[ \'user_id\' ]);
                    break;

                case \'deny_vendor\':
                    $role = \'customer\';
                    add_action( \'admin_notices\', array( $this, \'denied\' ) );
                    do_action( \'wcvendors_deny_vendor\', $wp_user_object ); 
                    break;

                default:
                    // code...
                    break;
            }

            $wp_user_object->set_role( $role );

        }
    }
我的自定义功能:

function create_submerchant($user_id) {

        $user_info = get_userdata($user_id);

        $store_country = \'TR\';
        $store_name = $user_info ->pv_shop_name;
        $store_owner_name = $user_info ->_wcv_custom_settings_bankahesapadi;
        $store_owner_lastname = $user_info ->_wcv_custom_settings_bankahesapsoyadi; 
        $store_email = $user_info -> user_email;
        $store_address = $user_info ->_wcv_custom_settings_banka_adres;
        $store_iban = $user_info ->_wcv_custom_settings_bankaiban;
        $store_owner_id = $user_id;
        $store_owner_tc = $user_info ->_wcv_custom_settings_kimlikno;

        create_personal_sub_merchant($store_country,$store_name,$store_owner_name,$store_owner_lastname,$store_email,$store_address,$store_iban,$store_owner_id,$store_owner_tc);

}
那么,如何使用挂钩来实现这一点呢?

1 个回复
最合适的回答,由SO网友:jer0dh 整理而成

这尚未测试,但您应该能够挂接到“wcvendors\\u approve\\u vendor”操作。它还将$wp\\u user\\u对象传递给您,您可以从中获取用户id。。。或$_GET 是全局的,因此您仍然可以访问$_GET[\'user_id\'] 如果你愿意的话。add\\u操作中的“10”是优先级,“1”告诉它传递了一个参数。

所以可能在你的functions.php 您可以添加以下内容

add_action(\'wcvendors_approve_vendor\', \'your_function\', 10, 1);

function your_function($user_object) {
  create_submerchant ($user_object->ID);
}

相关推荐

About Hooks and Filters

嗯,我很难理解动作和过滤器之间的区别。我确实在代码中使用动作,但我是一个新手,甚至连一点过滤器都不知道。我去过codex,以及NickTheGeek、BillErickson、GaryJones等的多个网站,但没有去过vein。如果你能用简单的话告诉我,并举例说明动作、过滤器和挂钩的基本内容和区别。非常感谢。