僕の運営しているフォーラムの方に、以下のような投稿がありました。
いつもお世話になっています。
<!–nextpage–>
でページ分割した際に、PC表示の場合のみ→「分割せずページ全体を表示」
上記以外(スマホ&タブレット)→「指定通りページを分割」という設定ができるようにしたいのですが、なにか上手なやり方はありませんか?
何卒よろしくお願い致します。
僕も、個人的に「どうやったらこの動作を実現できるか?」に興味があり、調べてみたら良い方法があったので、メモがてら紹介です。
目次
パソコンページの時だけページ分割を除外する
<!–nextpage–>を利用した分割ページを表示したときの動作をまとめると以下になります。
- パソコンページではページ分割[<!–nextpage–>]を除外(ページ分割しない)
- モバイルページではそのまま表示(ページ分割する)
WordPressのカスタマイズコードは以下になります。このコードをfunctions.phpにコピペするだけです。
//ページ分割タグを取り除く function remove_nextpage_tag( $post ) { global $pages, $multipage, $numpages; $multipage = 0; //<!--nextpage-->を置換して取り除く $content = str_replace("\n<!--nextpage-->\n", '<!--nextpage-->', $post->post_content); $content = str_replace("\n<!--nextpage-->", '<!--nextpage-->', $content); $content = str_replace("<!--nextpage-->\n", '<!--nextpage-->', $content); $pages = array( str_replace('<!--nextpage-->', '', $content) ); $numpages = 1; } if ( !wp_is_mobile() ) {//パソコンページのみ add_action( 'the_post', 'remove_nextpage_tag' ); }
上記コードは、以下を参考にして書きました。
参考 フォーラム » をテーマによって有効・無効を切り替えたい — WordPress
参考 WordPressで「PC用テーマ」「モバイル用テーマ」などテーマを分けてWebサイトを運用している場合、特定のテーマを表示している時だけページ分割させる方法 | 今村だけがよくわかるブログ
functions.phpの編集を誤ると、サイトが表示されなくなる可能性があります。一応念のため、編集の前にはfunctions.phpをバックアップしておくことをお勧めします。
まとめ
僕も、パソコンではページを一気に表示して、ザザッと眺めたいので、これは確かに良い方法かもしれません。
もし、「自分のサイトは分割ページを多用しているけど、パソコンだと分割していると表示がまどろっこしいなぁ」なんて思うことがあれば、今回のはカスタマイズは、良い解決方法だと思います。
いつもためになる情報ありがとうございます。
PC画面を分割するのはちょっとでしたが、スマホは分割記事にしたいと思っていました。
コード貼り付けで一発でできました。
1点少しきになることがありまして、
rel nextとrel prevの設定をしているのですが。
PCの場合ページ1、ページ2とも同じ内容で、重複コンテンツと見なされないか気になっています。
2記事目をno indexにする方法とかがあるのでしょうか?
もし良い対策をご存知でしたら、ご教示お願いします。