2012-12-07 9 views
4

여러 솔루션을 시도했지만 작동하지 않습니다.Wordpress 페이지 매김이 작동하지 않습니다.

/page/2로 이동해도 작동하지 않습니다.

내 테마의 index.php에서 사용자 정의 쿼리를 실행하고 있습니다. - Page which is not working (형식의 - mywebsite/페이지/2 /)

그냥이 실현이 페이지는 작동하지 않습니다 Home Page of my Site

(404 던지는) : 여기

if (get_query_var('paged')) { 
    $paged = get_query_var('paged'); 
} elseif (get_query_var('page')) { 
    $paged = get_query_var('page'); 
} else { 
    $paged = 1; 
} 

$args = array(
    'post_type' => array('post', 'music', 'videos'), 
    'post_status' => 'publish', 
    //'meta_key' => 'featured', 
    //'meta_value' => '1', 
    'posts_per_page' => 10, 
    'orderby'=>'date', 
    'order'=>'DESC', 
    'paged' => $paged 
); 

query_posts($args); 

내 웹 사이트에 대한 링크입니다 페이지 2 작동 - Page which is working (형식 - mywebsite.com/?page=2)

+0

wordpress.se이 질문은 모두 이상하다고 생각합니다. – John

+0

여러 솔루션을 시도했지만 작동하지 않았습니다. – dang

+1

wordpress.stackexchange.com은 이와 같은 사이트이지만 WordPress의 질문에 특히 적합합니다. 그들은저기서 워드 프레스 물건을하지만, 당신이 여기에 충분한 답변을 얻지 못한다면, 거기에 시도하십시오. – John

답변

3

때때로 페이지 나누기가 올바르게 작동하는 데 문제가 있습니다. 아래의 쿼리를 사용하여 도움이되는지 확인하십시오. 기본적으로 한 줄의 코드를 추가하고 $args 변수를 사용하지 않도록 쿼리를 변경했습니다.

<?php 

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 

query_posts(array(
    'post_type' => array(
     'post', 
     'music', 
     'videos', 
    ), 
    'post_status' => 'publish',, 
    'posts_per_page' => 10, 
    'orderby'=>'date', 
    'order'=>'DESC', 
    'paged' => $paged) 
); 

if (have_posts()) : while (have_posts()) : the_post(); 

?> 

    // Display your content here  

    <?php the_title ?> 

    <?php the_content(); ?> 

<?php endwhile; endif; ?> 
+0

고마워, 나는 그것을 시도했다. 하지만 작동하지 않습니다. – dang

+0

게시물이 10 개 이상입니까? 페이지 탐색 링크가 포함되어 있습니까? – AndyWarren

+0

예, 10 개 이상의 게시물을 가지고 있으며 페이지 탐색 링크를 포함하고 있습니다. – dang

16

나는 동일한 문제가있어서이 모든 것이 해결되었습니다. 이렇게하면 꽤 permalinks 내 page.php뿐만 아니라 index.php에 페이지 매김 수 있습니다.

HTML/PHP는 :

<?php 
    //Fix homepage pagination 
    if (get_query_var('paged')) { $paged = get_query_var('paged'); } else if (get_query_var('page')) {$paged = get_query_var('page'); } else {$paged = 1; } 

    $temp = $wp_query; // re-sets query 
    $wp_query = null; // re-sets query 
    $args = array('post_type' => array('post', 'music', 'videos'), 'orderby'=>'date', 'order'=>'DESC', 'posts_per_page' => 10, 'paged' => $paged); 
    $wp_query = new WP_Query(); 
    $wp_query->query($args); 
    while ($wp_query->have_posts()) : $wp_query->the_post(); 
?> 

<!--your loop stuff here --> 

<?php endwhile; ?> 
<nav> 
    <?php paginate(); ?> 
    $wp_query = null; 
    $wp_query = $temp; // Reset 
</nav> 

이 몇 가지 있습니다. 하나는 가정, 페이지 또는 단일에서 확인하고 $ 페이지 변수에 차례로 반응하는 방법을 알려줍니다. 또한 사용자 정의 게시물 유형을 사용하여 페이지 매김을 질의 할 수 있습니다. 또한 query_post를 사용하지 않으면 사용시 때때로 얻을 수있는 정말 펑키 한 것들을 피할 수 있습니다. 페이지 번호();

이 원래 나에게 약간의 페이지 매김이 홈페이지에 일하러 가야 모딩과 http://bavotasan.com/2011/simple-pagination-for-wordpress/에서 온

function paginate() { 
global $wp_query, $wp_rewrite; 
$wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1; 

$pagination = array(
    'base' => @add_query_arg('page','%#%'), 
    'format' => '', 
    'total' => $wp_query->max_num_pages, 
    'current' => $current, 
    'show_all' => true, 
    'type' => 'list', 
    'next_text' => '&raquo;', 
    'prev_text' => '&laquo;' 
    ); 

if($wp_rewrite->using_permalinks()) 
    $pagination['base'] = user_trailingslashit(trailingslashit(remove_query_arg('page', get_pagenum_link(1))) . '?page=%#%/', 'paged'); 

if(!empty($wp_query->query_vars['s'])) 
    $pagination['add_args'] = array('s' => get_query_var('s')); 

echo paginate_links($pagination); 
} 

당신의 functions.php 내부 : 우리가 지금 가져올 사용자 정의 함수입니다.

이것은 여러 가지 일을합니다. 그것은 각 페이지가 자신의 링크 (내가 좋은 것을 찾는다)를 페이지에 매김시키고 예쁜 퍼머 링크를 허용하는 URL을 다시 쓴다. 링크를 확인하면 변수의 's'가이 부분의 'paged'대신 사용되었습니다. 나는 's'를 'paged'로 바꿨고, 모든 것이 완벽하게 작동했습니다. 페이지 매김

ul.page-numbers { 
    margin: 20px 0 10px; 
    width: 100%; 
    padding: 0; 
    font-size: 12px; 
    line-height: normal; 
    clear: both; 
    float: left; 
} 

ul.page-numbers li { 
     float: left; 
    } 

ul.page-numbers a, 
ul.page-numbers span { 
    border-radius: 3px; 
    -moz-border-radius: 3px; 
    -webkit-border-radius: 3px; 
    background: -webkit-gradient(linear, left top, left bottom, from(#E4E3E3), to(#FFFFFF)); 
    background: -moz-linear-gradient(top, #E4E3E3, #FFFFFF); 
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#E4E3E3', endColorstr='#FFFFFF'); 
    padding: 3px 4px 2px 4px; 
    margin: 2px; 
    text-decoration: none; 
    border: 1px solid #ccc; 
    color: #666; 
} 

ul.page-numbers a:hover, 
ul.page-numbers span.current { 
    border: 1px solid #666; 
    color: #444; 
} 

편집

옵션 스타일링 나는 홈 페이지 매김 페이지 탭 중 하나를 클릭 한 후 휴식 것을 나중에 깨달았다. 나는 이것을 조건문을 대체하고 이것을 대신해서 고정시켰다. 위의 코드를 업데이트했습니다. 지금 잠시 동안이 문제로 어려움을 겪고있다

$pagination['base'] = user_trailingslashit(trailingslashit(remove_query_arg('page', get_pagenum_link(1))) . '?page=%#%/', 'paged'); 
+1

+1 awesome !!!!!! 이것이 완전한 해답입니다! 그것은 WP 3.5 이상에서 나를 위해 완벽하게 작동했습니다. TONNNNNNNN에게 감사드립니다! – Devner

0

, 우리의 워드 프레스 나를 위해 필수 필드 중 하나, max_num_pages 설정되지 않은 상태.

그래서이 변수를 루프 내에서 설정합니다. 여기 내 샘플 코드입니다.

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$args = array('post_type' => 'cpt', 'paged'=>$paged, 'posts_per_page' => 3); 
$loop = new WP_Query($args); 
$GLOBALS['wp_query']->max_num_pages = $loop->max_num_pages; // This is the line that did the magic for me. 

추가로 읽을 때, 나는 이것을 발견했다. single.php, singular.php 및 기타 단일 뷰 템플릿에

  1. : 쿼리 VAR 페이지에 지정된대로 (int) $page는 게시물의 페이지입니다 : get_query_var('page');
  2. 모든 종류의 archive.php 및 이와 유사한 아카이브/게시물 유형 목록보기 템플릿 : (int) $paged 전역 변수에 아카이브 목록과 같은 게시물 목록의 페이지 번호가 포함되어 있습니까?

이것은 당신이 (단일 뷰 템플릿 인) 페이지 템플릿에 있으며 루프를 사용하는 경우,이 변수를 설정해야합니다 것을 의미한다.

1

여기에 몇 가지 사항이 있지만 홈 페이지 또는 아카이브 페이지의 사용자 지정 쿼리에 대한 기본 쿼리를 절대로 변경하지 마십시오. 페이지 매김에 항상 문제가 있습니다.

또한 query_posts을 사용하여 사용자 지정 쿼리를 만들지 마십시오. 내 강조, 절대로.

참고 :이 기능은 플러그인 또는 테마에서 사용하지 않습니다. 나중에 설명 하듯이 기본 쿼리를 변경하기위한보다 우수하고 우수한 옵션이 있습니다. query_posts()는 페이지의 기본 쿼리를 쿼리의 새 인스턴스로 바꾸어 지나치게 단순하고 문제가되는 방식입니다. 비효율적이며 (SQL 쿼리를 다시 실행하는) 일부 상황에서는 철저히 실패합니다 (특히 게시물의 페이지 매김을 처리 할 때 특히 그렇습니다).

홈페이지 또는 모든 보관 페이지의 동작을 변경해야 할 경우 기본 검색어가 실행되기 전에 변경하거나 수정하려면 pre_get_posts`을 사용하십시오. 이것은 기본 쿼리를 변경하는 올바른 방법입니다. 실행 전에 주 쿼리를 변경하면 페이지 매김에 아무런 문제가 없습니다.

pre_get_posts은 조건부 태그와 함께 사용하여 특정 페이지를 타겟팅 할 수 있습니다. 보기를 위해 제공된 연결을보십시오.

관련 문제