Setarea numărului de articole pe pagină în query_posts
Aveți puțină răbdare...
Numărul implicit de articole pe pagină în zona de administrare este 10. În timpul unor teste, am vrut să schimb numărul de articole pe pagină pentru arhiva mea de postări personalizate la 2 (în WP 3.1).
Problema este că am doar 4 postări, deci ar trebui să fie 2 pagini cu câte 2 postări pe fiecare, dar pentru că valoarea implicită este 10, accesarea /page/2 returnează eroarea-404 (presupunând că cu 10 postări pe pagină nu ar exista o a doua pagină)
Singura modalitate de a rezolva acest lucru a fost să setez valoarea implicită în zona de administrare la 1, dar nu este ideal deoarece acum trebuie să fac un query_posts personalizat pentru toate arhivele de tip postare pentru a seta numărul de postări pe pagină.
Are cineva o modalitate mai bună de a face acest lucru sau alte idei? Mulțumesc.
archive-project.php:
<?php get_header(); ?>
<?php
global $wp_query;
query_posts(array_merge($wp_query->query, array(
'paged' => get_query_var('paged'),
'posts_per_page' => 2
)));
?>
<h1 class="title"><?php _e('Lucrări anterioare', 'fullycharged'); ?></h1>
<?php if (have_posts()): while(have_posts()): the_post();?>
<a href="<?php the_permalink(); ?>" id="post-<?php the_ID(); ?>" <?php post_class('launch col col-' . $i); ?>>
<span class="project-title"><?php the_title(); ?></span>
<?php the_content(); ?>
</a>
<?php endwhile; endif; ?>
<?php if ($wp_query->max_num_pages > 1): ?>
<div id="nav-below" class="navigation">
<div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">←</span> Articole mai vechi', 'twentyten' ) ); ?></div>
<div class="nav-next"><?php previous_posts_link( __( 'Articole mai noi <span class="meta-nav">→</span>', 'twentyten' ) ); ?></div>
</div>
<?php endif; ?>
<?php get_footer(); ?>
înregistrare tip postare:
register_post_type('project', array(
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'labels' => array(
'name' => __('Proiecte', 'fullycharged'),
'singular_name' => __('Proiect', 'fullycharged'),
'all_items' => __('Toate Proiectele', 'fullycharged'),
'add_new_item' => __('Adaugă Proiect Nou', 'fullycharged'),
'edit_item' => __('Editează Proiect', 'fullycharged'),
'update_item' => __('Actualizează Proiect', 'fullycharged')
),
'menu_icon' => get_stylesheet_directory_uri() . '/images/monitor-off.png',
'menu_position' => 5,
'public' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'rewrite' => array('slug' => 'work', 'with_front' => false),
'supports' => array('title', 'editor', 'thumbnail', 'custom-fields')
));

Iată ce folosesc de obicei acțiunea pre_get_posts
pentru a modifica o singură valoare a interogării pentru o pagină de taxonomie sau categorie:
/**
* Controlează numărul de rezultate ale căutării
*/
function custom_posts_per_page( $query ) {
if ( $query->is_tax('mytaxonomy') || $query->is_category('mycategory') ) {
set_query_var('posts_per_page', 9);
}
}
add_action( 'pre_get_posts', 'custom_posts_per_page' );

Documentația de aici http://codex.wordpress.org/Function_Reference/query_posts lasă impresia că poți pur și simplu să "actualizezi" o singură variabilă de interogare folosind funcția query_posts()
. Nu a funcționat pentru mine, dar exemplul tău folosind $wp_query->query_vars
funcționează. Ai vreo idee de ce?

Prin adăugarea la variabilele de interogare existente, nu rescriem nimic. Este ca și cum am spune: "Dă-mi setările tale, voi schimba o singură valoare, apoi le voi reseta." înainte de a rula interogarea.

Există o discuție pe forumurile de suport Wordpress.org despre această problemă exactă. Persoana care a inițiat discuția a găsit un răspuns, dar nu l-a postat încă.
Mulțumesc oricum pentru ajutor.
