drxrgundk062317205 2019-04-01 08:44
浏览 92

WooCommerce根据添加的自定义标题字段过滤管理员订单列表

In WooCommerce, I have added a new custom column 'Language' in my admin order list with custom values 'Japanese' or 'Non Japanese'.

How should I add filter option for Japanese language and Non Japanese language.

enter image description here

I added a filter drop down using below code:

add_action( 'restrict_manage_posts', 'wpse45436_admin_posts_filter_restrict_manage_posts' );
function wpse45436_admin_posts_filter_restrict_manage_posts(){
    global $post_type;
    if( $post_type == 'shop_order' ) {
        //change this to the list of values you want to show
        //in 'label' => 'value' format
        $values = array(
            'Japanese' => 'Japanese', 
            'Non Japanese' => 'Non Japanese',
        );
        ?>
        <select name="ADMIN_FILTER_FIELD_VALUE">
        <option value=""><?php _e('Filter By ', 'wose45436'); ?></option>
        <?php
            $current_v = isset($_GET['ADMIN_FILTER_FIELD_VALUE'])? $_GET['ADMIN_FILTER_FIELD_VALUE']:'';
            foreach ($values as $label => $value) {
                printf (
                    '<option value="%s"%s>%s</option>',
                    $value,
                    $value == $current_v? ' selected="selected"':'',
                    $label
                );
            }
        ?>
        </select>
        <?php
    }
}

I also added some code for filtering order list but its not working, here is my code:

add_action( 'pre_get_posts', 'apply_my_custom_product_filters' );
function apply_my_custom_product_filters( $query ) {

    global $pagenow;
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
    if ( $query->is_admin && $pagenow == 'edit.php' && isset( $_GET['ADMIN_FILTER_FIELD_VALUE'] ) && $_GET['ADMIN_FILTER_FIELD_VALUE'] != '' && $_GET['post_type'] == 'shop_order' ) {

       $meta_key_query = array(
          array(
              'meta_key'     => 'order_add_language',
              'value'   => esc_attr( $_GET['ADMIN_FILTER_FIELD_VALUE'] ),
              'compare' => '=',
          ),
          'posts_per_page' => 10,
          'paged' => $paged,
      );

      $query->set( 'meta_query', $meta_key_query );
    }
}
  • 写回答

2条回答 默认 最新

  • dongpao5658 2019-04-01 14:53
    关注

    This is wrong in your meta_key_query.You can try this code.

    add_action( 'pre_get_posts', 'apply_my_custom_product_filters' );
    function apply_my_custom_product_filters( $query ) {
    
        global $pagenow;
        $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
        if ( $query->is_admin && $pagenow == 'edit.php' && isset( $_GET['ADMIN_FILTER_FIELD_VALUE'] ) && $_GET['ADMIN_FILTER_FIELD_VALUE'] != '' && $_GET['post_type'] == 'shop_order' ) {
    
          $meta_key_query = array(
            array(
              'meta_key'     => 'order_add_language',
              'value'   => esc_attr( $_GET['ADMIN_FILTER_FIELD_VALUE'] ),
            )
          );
          $query->set( 'meta_query', $meta_key_query );
    
        }
    
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 html5+css有人可以帮吗?
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?