web-dev-qa-db-ja.com

Nextpageタグを無視または無効にする方法

このページでは、ページ区切りの目的で投稿に<!--nextpage-->タグを使用しています。データベースのタグを削除せずにページネーションを無効にしたい(おそらく将来的にタグを使用したいと思うかもしれません)。

テンプレートからwp_link_pages();を削除しようとしましたが、リンクなしで最初のページのコンテンツしか表示されませんでした - それがどのように機能するのか、または何か問題があるのか​​どうかはわかりません。

どうやったらwordpressが単に<!--nextpage-->を無視して投稿全体を一度に表示するようにすることができますか?

1

setup_postdata()関数内で行われるコンテンツのページ区切りを上書きするためにthe_postフィルタを使用することができます(PHP 5.4 +)。

/**
 * Ignore the <!--nextpage--> for content pagination.
 * 
 * @see http://wordpress.stackexchange.com/a/183587/26350
 */

add_action( 'the_post', function( $post )
{
    if ( false !== strpos( $post->post_content, '<!--nextpage-->' ) ) 
    {
        // Reset the global $pages:
        $GLOBALS['pages']     = [ $post->post_content ];

        // Reset the global $numpages:
        $GLOBALS['numpages']  = 0;

       // Reset the global $multipage:
        $GLOBALS['multipage'] = false;
    }

}, 99 );

<!--nextpage-->機能を無視します。

グローバル$pages変数は、ページ区切り付きの内容を含みます。

$pages = explode('<!--nextpage-->', $content);

だから我々はそれをに復元する必要がある理由です:

$pages = array( $post->post_content );

実際には$numpages変数を復元する必要はありませんが、ハウスクリーニングの一環として行います。 $pages$numpages=0だけを復元した場合、次のようになります。

<div class="page-links">Pages:</div>    

wp_link_pages()関数 は、グローバルな$multipageがtrueであるかどうかをチェックして 、コンテンツのページ区切りの出力を表示します。それで、出力全体を削除するためにfalseに設定する変数です。 wp_link_pagesフィルタを使ってそれを削除することもできます。

2
birgire

<?php $GLOBALS['multipage'] = false; ?>をループに入れてみてください。モバイルでページ番号が表示されない場合

wp_is_mobile()
$GLOBALS['multipage'] = false;

あなたに役立つことを願っています

0
SatuWeb