Я боролся с этой проблемой уже 2 дня. Я прочитал десятки сообщений, но не могу найти решение.
Примечание: все имена var на испанском, так как это испанский сайт.
Я создал пользовательский тип с именем «promocion», но при выводе списка архивов при попытке перейти на страницу 2 появляется ошибка 404.
Структура, которую я хотел бы настроить, следующая:
- domain.com / promocion / new-promocion ->
это хорошо работает
- domain.com / promociones -> список всех
Promociones, это тоже хорошо работает
- domain.com / promociones / page / 2 ->
Ошибка 404 - не найдена
- Имя файла архива в моем
шаблон: archive-promocion.php
- Имя просмотра одной страницы в моем
шаблон: single-promocion.php
Версия WordPress: 3.1
Плагины:
Вот пользовательский тип, созданный в functions.php
register_post_type('promocion', array(
'label' => 'Promociones',
'description' => 'Promociones',
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'capability_type' => 'post',
'hierarchical' => false,
'rewrite' => array('slug' => 'promocion'),
'query_var' => true,
'has_archive' => 'promociones',
'menu_position' => 4,
'supports' => array('title','editor',),'labels' => array (
'name' => 'promociones',
'singular_name' => 'promocion',
'menu_name' => 'Promociones',
'add_new' => 'Añadir nueva',
'add_new_item' => 'Añadir nueva',
'edit' => 'Editar',
'edit_item' => 'Editar Promoción',
'new_item' => 'Nueva Promoción',
'view' => 'Ver Promoción',
'view_item' => 'Ver Promoción',
'search_items' => 'Buscar Promociones',
'not_found' => 'No se encontraron promociones',
'not_found_in_trash' => 'No se encontraron promociones en la papelera',
'parent' => 'Parent Promoción',),) );
function my_connection_types() {
if ( !function_exists( 'p2p_register_connection_type' ) )
return;
p2p_register_connection_type( array(
'from' => 'promocion',
'to' => 'post',
'reciprocal' => true
) );
}
add_action( 'init', 'my_connection_types', 100 );
И вот начало моей архивной страницы (archive-promocion.php), где я делаю собственный SQL-запрос и устанавливаю нумерацию страниц:
if ( $cat != '' ) {
$cat_filter = 'wp_term_taxonomy.term_id = "' . $cat . '" AND';
} else {
$cat_filter = '';
}
$querystr = '
SELECT DISTINCT
promociones.ID,
promociones.post_title
FROM
wp_terms
Inner Join wp_term_taxonomy ON wp_terms.term_id = wp_term_taxonomy.term_id
Inner Join wp_term_relationships AS wpr ON wpr.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
Inner Join wp_posts AS comercios ON comercios.ID = wpr.object_id
Inner Join wp_p2p ON wp_p2p.p2p_to = comercios.ID
Inner Join wp_posts AS promociones ON promociones.ID = wp_p2p.p2p_from
WHERE
wp_term_taxonomy.taxonomy = "category" AND
comercios.post_type = "post" AND
' . $cat_filter . '
promociones.post_type = "promocion"
ORDER BY
promociones.menu_order ASC
';
$totalposts = $wpdb->get_results($querystr, OBJECT);
$ppp = 2;
$wp_query->found_posts = count($totalposts);
$wp_query->max_num_pages = ceil($wp_query->found_posts / $ppp);
$on_page = intval(get_query_var('paged'));
if($on_page == 0){ $on_page = 1; }
$offset = ($on_page-1) * $ppp;
$wp_query->request = $querystr . " LIMIT $ppp OFFSET $offset";
$pageposts = $wpdb->get_results($wp_query->request, OBJECT);
.htaccess файл
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /sitiodeloschicos/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /sitiodeloschicos/index.php [L]
</IfModule>
Пожалуйста, помогите мне, я схожу с ума здесь и уже опаздываю с этим проектом. Спасибо!