2016-12-05 1 views
0

Я пытаюсь создать каталог пользователя с помощью paginate_links() в WordPress. Ниже показано правильное правильное размещение URL-адресов для правильных ссылок на страницы (например, ссылка 3 дает мне https://www.example.com/private-messaging/?pmaction=directory&p=3). Однако $ _GET ['p'] не фиксирует номер страницы. Когда я проверяю его с помощью $ _SERVER ['QUERY_STRING'], я получаю каталог pmaction =. Когда я проверяю его с помощью print_r ($ _ GET), я возвращаюсь 1 независимо от URL-адреса. Когда я извлекаю ключ и значение из $ _GET, возвращается следующее: Key = pmaction, Value = directory. Я не уверен, что мне не хватает. $ _GET отлично работает в другом месте приложения, используя аналогичный метод, но не здесь. Что я могу делать неправильно?

Если я вручную отправить этот адрес в браузере: https://www.example.com/private-messaging/?pmaction=directory&p=3

Он отсекает конец и отображает только это: https://www.example.com/private-messaging/?pmaction=directory

И я на шаге 1 процесса. Если я вручную установил $ page = 3; Я увижу третий шаг (и только шаг 3).

function dispDirectory() 
{ 
    global $user_ID; 

    // Disallow directory if there is a messaging administrator and this person is not it. 
    if ($this->admin_user_id && $this->admin_user_id != $user_ID) { 
    return ''; 
    } 

    $count_args = array(
     'role'  => 'Client', 
     'fields' => 'all_with_meta', 
     'number' => 999999  
    ); 
    $user_count_query = new WP_User_Query($count_args); 
    $user_count = $user_count_query->get_results(); 
    $total_users = $user_count ? count($user_count) : 1; 
    $page = isset($_GET['p']) ? $_GET['p'] : 1; 
    $users_per_page = 15; 
    $total_pages = 1; 
    $offset = $users_per_page * ($page - 1); 
    $total_pages = ceil($total_users/$users_per_page); 

    $directory = "<form name='form' method='post'><label for='clientname'>Client Name: </label> 
    <input name='clientname' id='clientname' type='text' style='width: 181px;' 
    value=''/><input type='submit'></form>"; 

    $search_string = $_POST["clientname"]; 

    if (!empty($search_string)) { 
    $args = array ( 
      'meta_query' => array(
      'relation' => 'OR', 
      array(
       'key'  => 'first_name', 
       'value' => $search_string, 
       'compare' => 'LIKE' 
      ), 
      array(
       'key'  => 'last_name', 
       'value' => $search_string, 
       'compare' => 'LIKE' 
      ) 
      ) 
     ); 
    }else{ 
    $args = array ( 
     'meta_key' => 'last_name', 
     // return all fields 
     'fields' => 'all_with_meta', 
     'number' => $users_per_page, 
     'offset' => $offset // skip the number of users that we have per page    
     ); 
    } 

    $wp_user_query = new WP_User_Query($args); 
    $wp_user_query->query_orderby = str_replace('user_login', 'wp_usermeta.meta_value', $wp_user_query->query_orderby); 
    $wp_user_query->query(); 

    $users = $wp_user_query->get_results(); 

    if (!empty($users)) { 

     foreach($users as $u) 
     { 
     $firstName = get_user_meta($u->ID, 'first_name', true); 
     $lastName = get_user_meta($u->ID, 'last_name', true);   

     $directory .= '<p><strong>'.$lastName.', '.$firstName.'</strong> - <a href="'.$this->actionURL.'newmessage&to='.$u->ID.'">'.__('Send Message', 'cartpaujpm').'</a> <a href="'.$this->actionURL.'oldmessages&to='.$u->ID.'">'.__('Old Messages', 'cartpaujpm').'</a></p>'; 
     } 
    } else { 
     $directory .= '<p><strong>No Clients Found</strong></p>'; 
    } 

    $directory .= paginate_links(array(
     'base' => get_pagenum_link(1) . '%_%', // the base URL, including query arg 
     'format' => '&p=%#%', // this defines the query parameter that will be used, in this case "p" 
     'prev_text' => __('&laquo; Previous'), // text for previous page 
     'next_text' => __('Next &raquo;'), // text for next page 
     'total' => $total_pages, // the total number of pages we have 
     'current' => $page, // the current page 
     'end_size' => 1, 
     'mid_size' => 5, 
    )); 
    return $directory; 
} 

ответ

1

Вы пытаетесь это сделать?

 function dispDirectory() 
     { 
       global $user_ID; 

       // Disallow directory if there is a messaging administrator and this person is not it. 
      if ($this->admin_user_id && $this->admin_user_id != $user_ID) { 
       return ''; 
       } 

       $count_args = array(
        // 'role'  => 'Client', 
        'fields' => 'all_with_meta', 
        'number' => 999999  
       ); 
       $user_count_query = new WP_User_Query($count_args); 

       $user_count = $user_count_query->get_results(); 
       $total_users = $user_count ? count($user_count) : 1; 
       $page = isset($_GET['pagenum']) ? $_GET['pagenum'] : 1; 
       $limit = 2; 
       $offset = $limit * ($page - 1); 
       $total_pages = ceil($total_users/$limit); 

       $directory .= "<form name='form' method='post'><label for='clientname'>Client Name: </label> 
       <input name='clientname' id='clientname' type='text' style='width: 181px;' 
       value=''/><input type='submit'></form>"; 

       $search_string = $_POST["clientname"]; 

       if (!empty($search_string)) { 
       $args = array ( 
         'meta_query' => array(
         'relation' => 'OR', 
         array(
          'key'  => 'first_name', 
          'value' => $search_string, 
          'compare' => 'LIKE' 
         ), 
         array(
          'key'  => 'last_name', 
          'value' => $search_string, 
          'compare' => 'LIKE' 
         ) 
         ) 
        ); 
       }else{ 
       $args = array ( 
        'meta_key' => 'last_name', 
        // return all fields 
        'fields' => 'all_with_meta', 
        'number' => $limit, 
        'offset' => $offset // skip the number of users that we have per page    
        ); 
       } 

       $wp_user_query = new WP_User_Query($args); 
       $wp_user_query->query_orderby = str_replace('user_login', 'wp_usermeta.meta_value', $wp_user_query->query_orderby); 
       $wp_user_query->query(); 

       $users = $wp_user_query->get_results(); 


       if (!empty($users)) { 

        foreach($users as $u) 
        { 
        $firstName = get_user_meta($u->ID, 'first_name', true); 
        $lastName = get_user_meta($u->ID, 'last_name', true);   

        $directory .= '<p><strong>'.$lastName.', '.$firstName.'</strong> - <a href="newmessage&to='.$u->ID.'">'.__('Send Message', 'cartpaujpm').'</a> <a href="oldmessages&to='.$u->ID.'">'.__('Old Messages', 'cartpaujpm').'</a></p>'; 
        } 
       } else { 
        $directory .= '<p><strong>No Clients Found</strong></p>'; 
       } 


       echo $directory; 

       /*$directory = paginate_links(array(
        'base' => get_pagenum_link(1) . '%_%', // the base URL, including query arg 
        'format' => '&p=%#%', // this defines the query parameter that will be used, in this case "p" 
        'prev_text' => __('&laquo; Previous'), // text for previous page 
        'next_text' => __('Next &raquo;'), // text for next page 
        'total' => $total_pages, // the total number of pages we have 
        'current' => $page, // the current page 
        'end_size' => 1, 
        'mid_size' => 5, 
       ));*/ 


        $page_links = paginate_links(array(
         'base' => add_query_arg('pagenum', '%#%'), 
         'format' => '', 
         'prev_text' => __('&laquo;', 'text-domain'), 
         'next_text' => __('&raquo;', 'text-domain'), 
         'total' => $total_pages, 
         'current' => $page 
        )); 

        if ($page_links) { 
         echo '<div class="tablenav" style="width: 99%;"><div class="tablenav-pages" style="margin: 1em 0">' . $page_links . '</div></div>'; 
        } 

     } 
+0

Спасибо, что я взял из вашего примера изменения ссылки из «р» к «pagenum», а затем изменить свойство «базовый» в add_query_arg («pagenum», «% #%») с «формате '' blank. Это сработало. Мне нравятся параметры CSS, но я сохраняю это довольно простым. Большое спасибо. Он отлично работает. –

+0

добро пожаловать @CraigTucker – vel

 Смежные вопросы

  • Нет связанных вопросов^_^