Intereting Posts
Создайте страницу, которая будет использоваться для создания настраиваемого типа сообщения Если зарегистрированный пользователь meta Требуется функция post_type_archive_title, но в 'single' Каков правильный способ использования функций WordPress вне файлов WordPress? Почему сценарии администратора не печатаются Как я могу использовать логотип в заголовке? импортирование данных таблицы в пользовательский тип сообщения Слайдер слайдов с ограниченным количеством элементов на слайд Добавление мета значения в почтовый контент в WordPress во время save_post Пользовательский тип сообщения и URL-адрес Почему мой WP_Query не работает, когда термины tax_query являются массивом? Пользовательское поле Orderby для типа сообщения custome Рекомендуемый метод обновления / добавления меню при добавлении новой темы Удалите вкладку «Visual» из редактора TinyMCE is_page_template & is_page в functions.php не работает

Разбиение страницы 404

У меня возникают проблемы с разбиением на страницы при отображении пользовательских типов сообщений. Я хотел бы отобразить 9 сообщений, а затем отобразить числовое разбиение на страницы. Это работает, некоторые ссылки генерируются с (для меня) правильными URL-адресами: http: // mywebsite / tutorial / page / 2 или http: // mywebsite / tutorial / taxonomy / page / 2, но они всегда заканчиваются на странице 404.

Любая идея приветствуется, следующий мой код, поэтому, если вы видите какие-либо проблемы 🙂

Спасибо заранее.

Сирил

<?php $args = array( 'post_type' => 'tutorial', 'paged' => ((get_query_var('paged')) ? get_query_var('paged') : 1), 'posts_per_page' => 9 ); query_posts($args); ?> [MAIN LOOP] <?php numeric_pagination(); ?> 

Вот функция numeric_pagination () (найденная в Интернете, работающая на другом веб-сайте …):

 function numeric_pagination($pages = '', $range = 2) { global $paged; $showitems = ($range * 2) + 1; if(empty($paged)) $paged = 1; if($pages == '') { global $wp_query; $pages = $wp_query->max_num_pages; if(!$pages) { $pages = 1; } } if(1 != $pages) { echo '<div class="numeric-pagination"><p>'; if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo '<a href="'.get_pagenum_link(1).'">&laquo;</a>'; if($paged > 1 && $showitems < $pages) echo '<a href="'.get_pagenum_link($paged - 1).'">&lsaquo;</a>'; for ($i=1; $i <= $pages; $i++) { if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )) { echo ($paged == $i)? '<span class="current">'.$i.'</span>':'<a href="'.get_pagenum_link($i).'" class="inactive" >'.$i.'</a>'; } } if ($paged < $pages && $showitems < $pages) echo '<a href="'.get_pagenum_link($paged + 1).'">&rsaquo;</a>'; if ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) echo '<a href="'.get_pagenum_link($pages).'">&raquo;</a>'; echo '</p></div>'; } 

}

Возможно, возникла проблема с моим настраиваемым типом сообщений и моими таксономиями, поэтому я даю также код для этого:

 /* POST TYPE */ add_action('init','create_tutorials_post_type'); function create_tutorials_post_type() { // Labels $labels = array( 'name' => 'Tutorials', 'singular_name' => 'Tutorial', 'add_new' => 'Add new', 'add_new_item' => 'Add new tutorial', 'edit_item' => 'Edit', 'new_item' => 'New tutorial', 'view_item' => 'View tutorial', 'search_items' => 'Search tutorial', 'not_found' => 'No tutorial found', 'not_found_in_trash' => 'No tutorial found in trash', 'parent_item_colon' => '', 'menu_name' => 'Tutorials' ); // Arguments $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => true, 'capability_type' => 'post', 'has_archive' => true, 'hierarchical' => false, 'menu_position' => null, 'supports' => array('title','editor','author','thumbnail','excerpt','comments') ); // Register post type register_post_type('tutorial',$args); } /* TAXONOMY */ add_action('init','create_tutorials_taxonomies'); function create_tutorials_taxonomies() { // Labels $labels = array( 'name' => 'Tutorial types', 'singular_name' => 'Tutorial type', 'search_items' => 'Search a type', 'all_items' => 'All types', 'parent_item' => 'Parent type', 'parent_item_colon' => 'Parent type:', 'edit_item' => 'Edit type', 'update_item' => 'Update type', 'add_new_item' => 'Add new type', 'new_item_name' => 'New tutorial type', 'menu_name' => 'Types' ); // Arguments $args = array( 'hierarchical' => true, 'labels' => $labels, 'show_ui' => true, 'query_var' => true, 'rewrite' => array('slug' => 'tutorials', 'hierarchical' => true) ); // Register taxonomy register_taxonomy('tutorial_type',array('tutorial'),$args); } 

Solutions Collecting From Web of "Разбиение страницы 404"

Измените предопределенные posts_per_page на минимальное значение в настройках wordpress или добавьте код ниже в functions.php. WordPress с использованием параметра по умолчанию. Например: 10. И если ваши настройки в query_posts или WP_Query выглядят как «posts_per_page => 2» и количество сообщений в пользовательском типе сообщений менее 10, после нажатия на / page / 2 / вы перенаправляетесь на страницу 404.

Используйте этот код для functions.php для решения проблемы:

 if( !is_admin() ){ add_action( 'pre_get_posts', 'set_per_page' ); } function set_per_page( $query ) { global $wp_the_query; if($query->is_post_type_archive('tutorial')&&($query === $wp_the_query)){ $query->set( 'posts_per_page', 1); } return $query; } 

Эй, у меня была аналогичная проблема.

Проблема заключалась в том, что WordPress установил для отображения 10 сообщений на страницу по умолчанию, которые столкнулись с моим запросом (ограничение на 2 сообщения), чтобы исправить проблему. Я изменил параметр WordPress (Настройки / Чтение на панели управления администратора) на 1.

Я бы использовал paginate_links () для этого:

 global $wp_query; $big = 999999999; // need an unlikely integer echo paginate_links( array( 'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ), 'format' => '?paged=%#%', 'current' => max( 1, get_query_var('paged') ), 'total' => $wp_query->max_num_pages ) ); 

Это последний и самый лучший пример из статьи codex, приведенной выше. Как правило, лучше использовать основную функцию, когда доступна такая возможность.

Я решил эту проблему, используя фильтр parse_query. Для получения дополнительной информации см. Здесь: Исправить пользовательскую разбивку по страницам, не изменяя настройки для каждой страницы на странице