Я пытаюсь создать каталог пользователя с помощью 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' => __('« Previous'), // text for previous page
'next_text' => __('Next »'), // 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;
}
Спасибо, что я взял из вашего примера изменения ссылки из «р» к «pagenum», а затем изменить свойство «базовый» в add_query_arg («pagenum», «% #%») с «формате '' blank. Это сработало. Мне нравятся параметры CSS, но я сохраняю это довольно простым. Большое спасибо. Он отлично работает. –
добро пожаловать @CraigTucker – vel