我试图搜索如何删除它。我已经了解了WooCommerce代码,看看它是如何实现的。
我可以看到它是在类中实现的WC_Admin_List_Table_Orders
它扩展了WC_Admin_List_Table
. 这个WC_Admin_List_Table_Orders
类别位于:
/woocommerce/includes/admin/list tables/class wc admin list table订单。php
从_construct
中的方法WC_Admin_List_Table
有一个add_action( \'restrict_manage_posts\', array( $this, \'restrict_manage_posts\' ) );
.
所以在WC_Admin_List_Table_Orders
我们会找到restrict_manage_posts
方法调用下一个方法render_filter()
:
/**
* See if we should render search filters or not.
*/
public function restrict_manage_posts() {
global $typenow;
if ( in_array( $typenow, wc_get_order_types( \'order-meta-boxes\' ), true ) ) {
$this->render_filters();
}
}
/**
* Render any custom filters and search inputs for the list table.
*/
protected function render_filters() {
$user_string = \'\';
$user_id = \'\';
if ( ! empty( $_GET[\'_customer_user\'] ) ) { // phpcs:disable WordPress.Security.NonceVerification.NoNonceVerification
$user_id = absint( $_GET[\'_customer_user\'] ); // WPCS: input var ok, sanitization ok.
$user = get_user_by( \'id\', $user_id );
$user_string = sprintf(
/* translators: 1: user display name 2: user ID 3: user email */
esc_html__( \'%1$s (#%2$s – %3$s)\', \'woocommerce\' ),
$user->display_name,
absint( $user->ID ),
$user->user_email
);
}
?>
<select class="wc-customer-search" name="_customer_user" data-placeholder="<?php esc_attr_e( \'Filter by registered customer\', \'woocommerce\' ); ?>" data-allow_clear="true">
<option value="<?php echo esc_attr( $user_id ); ?>" selected="selected"><?php echo htmlspecialchars( wp_kses_post( $user_string ) ); // htmlspecialchars to prevent XSS when rendered by selectWoo. ?><option>
</select>
<?php
}
所以,现在的问题是如何防止任何一个被调用。我喜欢这个过程中包含一个add\\u操作挂钩。因为这通常意味着remove_action()
. 这就是我一直试图做的。没有成功。What Iv\'e tried:
下面的示例WC_Admin_List_Table 和WC_Admin_List_Table_Orders:remove_action( \'restrict_manage_posts\', array( \'WC_Admin_List_Table\', \'restrict_manage_posts\' ) );
但优先考虑以下各项10 到9999999:remove_action( \'restrict_manage_posts\', array( \'WC_Admin_List_Table\', \'restrict_manage_posts\' ), 10 );
Wrapping it to wp_loaded 使用$wc\\U admin\\U post\\U types全局变量。从联机搜索中找到此。我还尝试了另一个全局变量,$wc\\u list\\u table。最终尝试了有优先权和无优先权:add_action(\'wp_loaded\', function() {
global $wc_admin_post_types;
remove_action( \'restrict_manage_posts\', array($wc_admin_post_types, \'restrict_manage_posts\'), 10, 2 );
});
我也试过woocommerce_loaded
和woocommerce_init
. 我也在这些初始化和加载操作中尝试了上述示例。Nothing works.
有人知道怎么做吗?