WordPressのマルチページで、PCの時は分割しない、モバイルの時は分割する方法

僕の運営しているフォーラムの方に、以下のような投稿がありました。

いつもお世話になっています。

<!–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をバックアップしておくことをお勧めします。

まとめ

僕も、パソコンではページを一気に表示して、ザザッと眺めたいので、これは確かに良い方法かもしれません。

もし、「自分のサイトは分割ページを多用しているけど、パソコンだと分割していると表示がまどろっこしいなぁ」なんて思うことがあれば、今回のはカスタマイズは、良い解決方法だと思います。

『WordPressのマルチページで、PCの時は分割しない、モバイルの時は分割する方法』へのコメント

  1. 名前:あさむ 投稿日:2017/08/05(土) 18:16:57 ID:85a5c273b

    いつもためになる情報ありがとうございます。
    PC画面を分割するのはちょっとでしたが、スマホは分割記事にしたいと思っていました。
    コード貼り付けで一発でできました。
    1点少しきになることがありまして、
    rel nextとrel prevの設定をしているのですが。
    PCの場合ページ1、ページ2とも同じ内容で、重複コンテンツと見なされないか気になっています。
    2記事目をno indexにする方法とかがあるのでしょうか?
    もし良い対策をご存知でしたら、ご教示お願いします。

  2. アバター画像 名前:わいひら 投稿日:2017/08/06(日) 19:46:44 ID:97d14648b

    rel nextとrel prevは、ページの繋がりを示すものなので、重複対策は不要なのかなと思います。そのためのタグだと思うので。
    僕自身、以下のような分割ページを公開して、もう3年以上になりますが、Google Search Consoleで重複として出たことはありません。
    https://wp-simplicity.com/layout/

    ただ、Googleの中の事の詳細は、僕も分からないので、保証はできないです。