2017-06-08 12 views
0

カスタムテーマでページネーションループが機能しないホームページテンプレート。すべてのページに同じ内容が表示されます。WPページネーションループがカスタムテーマで機能しない

問題を解決するための他のコードを私に提案することもできます。

<?php 
// clear any other queries that may be in use! 
wp_reset_query(); 
// check for $_GET paged value 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
// setup post arguments 
$args = array('posts_per_page' => 7, 'paged' => $paged,); 
// run our query 
query_posts($args); 
// start loop 
if (have_posts()) : while (have_posts()) : the_post(); 
    // if you use the <!-- more --> in your posts. 
    global $more; 
    $more = 0; 
?> 
    <div class="post"> 
    <?php the_title(); ?> 
    </div> 
<?php endwhile; ?> 
<div class="navigation"> 
    <?php next_posts_link('Next'); ?> 
    <?php previous_posts_link('Previous'); ?> 
</div> 
<?php else: ?> 
    <div><h2>Nothing found</h2><p>No posts found for that query</p></div> 
<?php endif; ?> 
+0

は、多分それは他のいくつかの問題があったが、作ることができなかったがテーマのページ設定作業。 その後、ajaxページ分割プラグインを使用して問題を修正しました。 – Rakibuzzaman

答えて

1

query_posts()は、プラグインやテーマでは使用できません。代わりにWP_Queryを使用してください。これは、query_postsと同じパラメーターを受け入れます。これらの方法のどちらも、デフォルトのクエリを変更する最も効率的な方法ではないことに注意してください。実際、どちらの方法もページ分割を破る責任があります。

テーマがこれらの方法のいずれかを使用してメインループを照会している場合は、「pre_get_posts」にフックし、is_main_query()を使用してメインクエリを変更することができます。データベースからポストを取得する前に、メインループのクエリが変更されるため、この方法はより高速で信頼性が高くなります。

<?php 
// clear any other queries that may be in use! 
wp_reset_query(); 
// check for $_GET paged value 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
// setup post arguments 
$args = array('posts_per_page' => 7, 'paged' => $paged,); 
// run our query 
query_posts($args); 
// start loop 
if (have_posts()) : while (have_posts()) : the_post(); 
    // if you use the <!-- more --> in your posts. 
    global $more; 
    $more = 0; 
?> 
    <div class="post"> 
    <?php the_title(); ?> 
    </div> 
<?php endwhile; ?> 
<div class="navigation"> 
    <?php next_posts_link('Next'); ?> 
    <?php previous_posts_link('Previous'); ?> 
</div> 
<?php else: ?> 
    <div><h2>Nothing found</h2><p>No posts found for that query</p></div> 
<?php endif; ?> 

は、あなたのコードからquery_postsの一部を削除します:

<?php 
// clear any other queries that may be in use! 
wp_reset_query(); 
// check for $_GET paged value 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
// setup post arguments 
$args = array('posts_per_page' => 7, 'paged' => $paged,); 
// run our query 
query_posts($args); 
?> 

はたとえば、あなたのテーマは、あなたのホームページにこのようなメインループを照会し、改ページが動作していないと言うことができますテーマのfunctions.phpファイルにホームページのクエリを追加してください:

function my_post_queries($query) { 
    // do not alter the query on wp-admin pages and only alter it if it's the main query 
    if (!is_admin() && $query->is_main_query()){ 

    // alter the query for the home and category pages 

    if(is_home()){ 
     $query->set('posts_per_page', 7); 
    } 

    if(is_category()){ 
     $query->set('posts_per_page', 3); 
    } 

    } 
} 
add_action('pre_get_posts', 'my_post_queries'); 

条件タグを使用して、クエリを変更するページをターゲットにすることができます。同様に、

// alter the query for the Movies category page 
if(is_home() || is_front_page){ 
    $query->set('posts_per_page', 7); 
} 
2

上記の回答がうまく動作しない場合は、query_postsの代わりにWP_Queryを使用してください。

<?php 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$args = array(
    'posts_per_page' => 3, 
    'paged'   => $paged 
); 

$the_query = new WP_Query($args); 
?> 

改ページを静的フロントページに壊れている場合は、この方法をパラメータ「ページング」を追加する必要があります。

if (get_query_var('paged')) { $paged = get_query_var('paged'); } 
elseif (get_query_var('page')) { $paged = get_query_var('page'); } 
else { $paged = 1; } 
0
<?php 
// Get current page and append to custom query parameters array 
$paged = get_query_var('paged') ? get_query_var('paged') : 1; 
    // Define custom query parameters 
    $args = array( 'posts_per_page' => 5, 'paged' => $paged); 
    $custom_query_args = array($args); 

    // Instantiate custom query 
    $custom_query = new WP_Query($custom_query_args); 

    // Pagination fix 
    $temp_query = $wp_query; 
    $wp_query = NULL; 
    $wp_query = $custom_query; 

// Output custom query loop 
if ($custom_query->have_posts()) : 
    while ($custom_query->have_posts()) : 
     $custom_query->the_post(); 
       ?> 
      <div class="blog-post"> 
       <?php the_post_thumbnail('post-thumbnail'); ?> 

    <?php endwhile; 
endif; 
// Reset postdata 
wp_reset_postdata(); 

echo "<div class='blog-nav'>"; 

// Custom query loop pagination 
previous_posts_link('Older Posts'); 
next_posts_link('Newer Posts', $custom_query->max_num_pages); 

$big = 999999999; // need an unlikely integer 

echo paginate_links(array(
    'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))), 
    'format' => '?paged=%#%', 
    'current' => max(1, get_query_var('paged')), 
    'total' => $custom_query->max_num_pages 
)); 

// Reset main query object 
echo "</div>"; 
$wp_query = NULL; 
$wp_query = $temp_query; 
?> 
関連する問題