2016-09-14 4 views
0

고객 metadata과 함께 query->set()을 사용하여 주문을 표시하려고합니다. _admin_name 메타 데이터는 wp_postmeta에 저장되며 관리자는 admin_name이 (가) user name과 동일한 주문 만 볼 수 있기를 바랍니다.주문을 표시 할 메타 데이터를 쿼리합니다. Woocommerce

메타 데이터에 query->set()을 어떻게 사용합니까?

function mypo_parse_query_useronly($wp_query) { 
    global $post; 

    if ($wp_query->is_admin && strpos($_SERVER[ 'REQUEST_URI' ], '/wp-admin/edit.php?post_type=shop_order') == true) { 

     add_action('views_edit-post', 'child_remove_some_post_views'); 
     global $current_user; 
     $userName = $current_user->user_login; 
     $meta_query_args = array(
       array(
         'key'  => '_user_name', 
         'value' => $userName, 
         'compare' => '=' 
       ) 
     ); 

     //trying use this code 
     // $query = new WP_Query($meta_query_args); 


     $wp_query->set('author', $current_user->id); 

    } 
} 

add_filter('parse_query', 'mypo_parse_query_useronly'); 

    //don't display the order whish is not own by current user. 
function child_remove_some_post_views($views) { 
    //header('Location: '.$newURL); 
    unset($views['all']); 
    unset($views['wc-processing']); 
    unset($views['wc-on-hold']); 
    unset($views['wc-completed']); 
    unset($views['pending']); 
    return $views; 
} 

이 작업을 수행 할 수 있도록 방법이 여기있다 :

내 코드?

감사합니다.

답변

1
<?php 
function mypo_parse_query_useronly($wp_query) { 
    global $post; 

    if ($wp_query->is_admin && strpos($_SERVER[ 'REQUEST_URI' ], '/wp-admin/edit.php?post_type=shop_order') == true) { 

     add_action('views_edit-post', 'child_remove_some_post_views'); 
     global $current_user; 
     $userName = $current_user->user_login; 
     $meta_query_args = array(
       array(
         'key'  => '_user_name', 
         'value' => $userName, 
         'compare' => '=' 
       ) 
     ); 

     //trying use this code 
     // $query = new WP_Query($meta_query_args); 


     $wp_query->set('author', $current_user->id); 
     $wp_query->set('meta_query', array(
             array(
               'key' => '_user_name', 
               'value' => $userName, 
               'compare' => '=' 
             ) 
         )); 

    } 
} 
add_filter('parse_query', 'mypo_parse_query_useronly'); 
//don't display the order whish is not own by current user. 
function child_remove_some_post_views($views) { 
    //header('Location: '.$newURL); 
    unset($views['all']); 
    unset($views['wc-processing']); 
    unset($views['wc-on-hold']); 
    unset($views['wc-completed']); 
    unset($views['pending']); 
    return $views; 
}