페이지 게시물-숫자 및 다음 / 이전 링크를 사용하는 방법?


17

wp_link_pages (공통 페이지 게시물)에 페이지 번호, 해당 번호 앞에 "이전"이라는 단어 및 해당 번호 뒤에 "다음"을 표시하고 싶습니다. 다음과 같이 보일 것입니다 :

이전 1, 2, 3, 4 다음

플러그인 없이이 작업을 시도 하고 있습니다. 여기에 내가 지금까지 시도한 것이 있지만 작동하지 않고 숫자 만 표시합니다.

<?php wp_link_pages(array(
    'before' => '<span style="clear:both; display:block">Pages', 
    'after'  => '</span>',
    'next_or_number'=>'number',
    'previouspagelink' => 'previous',
    'nextpagelink'=> 'Next'
)); ?>

답변:


12

사용중인 wp_link_pagesCodex 기능에는 기본적으로 찾고있는 기능이 없습니다.

그러나 해당 함수 인수에 필터 로 등록 된 콜백 함수를 사용하여이를 쉽게 확장 할 수 있습니다 .

add_filter('wp_link_pages_args', 'wp_link_pages_args_prevnext_add');

그런 다음 필터는 해당 기능 사용되는 매개 변수를 즉석 에서 수정 하고 번호가 지정된 링크 목록 ( ) 의 왼쪽과 오른쪽에 출력되는 prevnext인수에 대한 누락 된 링크를 삽입합니다 .next_or_number' => 'number'

/**
 * Add prev and next links to a numbered page link list
 */
function wp_link_pages_args_prevnext_add($args)
{
    global $page, $numpages, $more, $pagenow;

    if (!$args['next_or_number'] == 'next_and_number') 
        return $args; # exit early

    $args['next_or_number'] = 'number'; # keep numbering for the main part
    if (!$more)
        return $args; # exit early

    if($page-1) # there is a previous page
        $args['before'] .= _wp_link_page($page-1)
            . $args['link_before']. $args['previouspagelink'] . $args['link_after'] . '</a>'
        ;

    if ($page<$numpages) # there is a next page
        $args['after'] = _wp_link_page($page+1)
            . $args['link_before'] . ' ' . $args['nextpagelink'] . $args['link_after'] . '</a>'
            . $args['after']
        ;

    return $args;
}

용법:

wp_link_pages(array(
    'before' => '<p>' . __('Pages:'),
    'after' => '</p>',
    'next_or_number' => 'next_and_number', # activate parameter overloading
    'nextpagelink' => __('Next'),
    'previouspagelink' => __('Previous'),
    'pagelink' => '%',
    'echo' => 1 )
);

테마가 항상 이전 및 다음 링크를 사용하는 경우 기능을 약간 변경하여 number(기본값) 사용될 때마다 기본 동작으로 만들 수 있으므로 테마를 적게 작성해야합니다.

이것은 Velvet Blues가 제안한 약간 다른 구현 입니다.


몇 가지 의견과 초기 반품을 제외하고는 구현, 옵션 이름 및 설명이 내 것과 정확히 동일합니다. 내가 뭔가를 내려다보고 있습니까? 솔루션은 어떤 이점을 제공합니까? 감사.
Velvet Blues

아마도 코드를 비교할 때.
hakre

질문이있는 한 Hakre의 솔루션을 이용할 수 있습니다. StackExchange에서는 항상 완전한 답변 (= 외부 소스에 의존하지 않고 이해할 수 있음)이 선호됩니다.
fuxia

6

wp_link_pages()함수는 텍스트 또는 숫자 만 표시 하며 둘 다 표시하지는 않습니다. 함수 코드를 살펴보면 매개 변수를 전달하여 다르게 동작하도록하는 옵션이 없다는 것을 알 수 있습니다.

즉, 플러그인없이 이것을 수행하는 세 가지 방법이 있습니다.

  1. 테마의 functions.php 파일에서 고유 한 함수를 작성하십시오. 작동하지만 새로운 기능이 생깁니다.
  2. 의 2-3 개 인스턴스를 사용하십시오 wp_link_pages(). 매우 비효율적 인 해킹.
  3. 필터를 사용하십시오. 선호하는 방법 . 아래를 참조하십시오.

내 블로그에서이 작업을 수행하는 방법에 대한 기사를 작성했습니다. 기본적으로 wp_link_pages_args 필터를 사용하고 functions.php 파일에 새 옵션 'next_and_number'를 추가하는 함수를 추가합니다.

워드 프레스 해킹 : wp_link_pages ()를 사용하여 숫자 및 다음 / 이전 링크 표시


Cool man ... 나는 4 가지 글로벌 가치를 사용하는 것을 생각하고 있었지만 결코 해결책을 찾지 못했습니다 ... +1!
Rutwick Gangurde

3

이것을 시도하십시오, 당신은 그것을 더 주문을 받아서 만들 수 있습니다. 그러나 원하는대로해야합니다 :-)

function tp_link_pages() {
    global $page, $numpages;

    echo paginate_links( array(
        'format' => get_permalink() . '%#%/',
        'current' => $page,
        'total' => $numpages
    ) );
}

어떻게 관리 할 수 ​​있습니까? wordpress.org/support/topic/… 또는 페이지 번호 앞에 동적 맞춤 제목을 추가하는 방법.
ravi patel

1

문제가 무엇인지 모르겠습니다 ... 오류가 있습니까?

이것은 작동해야합니다 :

<?php $args = array(
    'before'           => '<span style="clear:both; display:block">Pages',
    'after'            => '</span>',
    'nextpagelink'     => __('Next'),
    'previouspagelink' => __('Previous')
); 

wp_link_pages($args);
?> 

number가 이미 기본값이므로 next_or_number를 추가 할 필요가 없습니다.


어떤 이유로 이것은 작동하지 않지만 나에게 맞는 것 같습니다. 3.3으로 변경되었는지 또는 functions.php에 무언가를 붙여 넣을 필요가 있는지 궁금합니다.
AndrettiMilas

2
네, 이것도 시도 next_or_number했습니다 next.로 설정하면 작동 합니다 . 그러나 숫자가 아닌 '다음'및 '이전'링크 만 표시합니다!
Rutwick Gangurde

1
예제와 같이 둘 다 필요합니다.
AndrettiMilas

1

이 코드는 게시물 루프에 있습니까? 코딩은 나에게 괜찮습니다. 사용 방법에 대한 Codex 예제는 다음과 같습니다.

<?php

wp_link_pages(array(
    'before' => '<p>' . __('Pages:'),
    'after' => '</p>',
    'next_or_number' => 'number',
    'nextpagelink' => __('Next page'),
    'previouspagelink' => __('Previous page'),
    'pagelink' => '%',
    'echo' => 1 )
);

?>

이 코드는 작동하지 않습니다.
AndrettiMilas

코드가 수정되었습니다. 죄송합니다. 일부 속성에는 값이 없습니다.
Caio Alves

1
이것은 내 질문에서 찾고 있던 결과를 얻지 못하고 숫자 만 보여줍니다.
AndrettiMilas

0

답은 다르지만 @ 荒野 无 灯가 그의 답을 삭제하기로 결정한 것은 영감이었습니다. 가장 쉽고 유연한 솔루션으로 최고입니다.

솔루션은에 따라 다릅니다 paginate_links(). 알아야 할 유일한 것은 base시작부터 UR이 추가되고 %_%로 바뀐다는 것 format입니다. 우리가 사용하는 한 get_permalink().'%_%';, 우리는 어쨌든 현재 게시물을 유지한다는 것을 알고 있습니다. 내부는 format의는 #페이지 번호로 대체됩니다 :

function wpse37256_paginate_paged()
{
    if ( ! $paginate_links = paginate_links( array(
         'type'      => 'array'

        ,'total'     => $GLOBALS['numpages']
        ,'mid_size'  => 1
        ,'end_size'  => 1

        #,'prev_next' => false
        ,'prev_text' => '&laquo; '.__( 'Prev', 'your_textdomain' )
        ,'next_text' => __( 'Next', 'your_textdomain' ).' &raquo;'

        ,'base'      => get_permalink().'%_%'
        ,'format'    => user_trailingslashit( '%#%' )

        ,'current'   => $GLOBALS['page']
    ) ) )
        return;

    echo "<div class='pagination-container'>{$paginate_links}</div>";
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.