web-dev-qa-db-ja.com

the_contentとwp_link_pages

多くのプラグインが関連記事や広告などを表示するためにthe_contentにfilter/actionフックを追加しているようです。問題は、私はこれらが現れる - ポストページネーションですので、ページネーションは下に押し下げられます。

コンテンツの直後にポストページネーションを表示することは可能ですか? wp_link_pagesはループ内でのみ使用できるようです。

3
Jürgen Paul

私はあなたが持っていると思います:

the_content();
wp_link_pages();

あなたのテーマファイルに。そのため、代わりに次のことを試すことができます( PHP 5.4+ ):

/**
 * Append the wp_link_pages to the content.
 */
! is_admin() && add_filter( 'the_content', function( $content )
{
    if( in_the_loop() ) 
    {
        $args = [ 'echo' => false ];        // <-- Adjust the arguments to your needs!
        $content .= wp_link_pages( $args );
    }
    return $content;
}, 10 );                                    // <-- Adjust the priority to your needs!

その後、 arguments および priority を必要に応じて調整します。 echoパラメータに注意してください。出力を返す必要があるため、falseに設定されています。その後、あなたの(子)テーマファイルからwp_link_pages()を削除しなければなりません。

更新:

余分なwp_link_pages()を手動で削除したくない場合は、wp_link_pagesフィルタコールバック内で、出力のみを表示するためにthe_contentフィルタを使用できます。

/**
 * Append the wp_link_pages to the content.
 */
! is_admin() && add_filter( 'the_content', function( $content )
{
    if( in_the_loop() ) 
    {
        $args = [ 'echo' => false, '_show' => true ];  // <-- Adjust the arguments to your needs!
        $content .= wp_link_pages( $args );
    }
    return $content;
}, 10 );                                              // <-- Adjust the priority to your needs!

/**
 * Only display wp_link_pages() output when the '_show' argument is true.
 */
add_filter( 'wp_link_pages', function( $output, $args )
{
    return ! isset( $args['_show'] ) || ! wp_validate_boolean( $args['_show'] ) ? '' : $output;
}, 10, 2 );

この目的のために追加の_show引数を導入しました。

8
birgire