Home Web 【WordPress】ページ送りで記事を分割する方法(スマホだけ分割)

【WordPress】ページ送りで記事を分割する方法(スマホだけ分割)

記事を分割する方法(スマホだけ分割)

分割するほど記事が長くなることは多分ないと思うんですけど、一応、分割できるようにしました。
PCでは記事が長くなっても別によいかなと思うんですが、沢山画像を使ってたりするので、スマホでは記事が長いとページが重くなっちゃいそうですし、スマホの時のみ分割できるようにしました。
今回はその方法をメモしていきます。

記事を分割する方法

single.php内で下記のコードを記述します。
「<?php the_content(); ?>」の下に設置しました。


<?php
$num = array(
    'before' => '<div class="split-nav">',
    'after' => '</div>',
    'link_before' => '<span>',
    'link_after' => '</span>',
    'next_or_number' => 'number',
    'separator' => '',
    'pagelink' => '%',
    'echo' => 1
);
wp_link_pages($num);
?>

全体を<div class=”split-nav”> 〜 </div>で囲って、「1、2、3…」のリンクを<span> 〜 </span>で囲うようにしてます。

wp_link_pages」の使い方は下記のサイトで詳しく書かれています。

テンプレートタグ/wp link pages – WordPress Codex 日本語版

投稿の編集内のエディタで、分割したい位置で


<!--nextpage-->

と書くと、その位置で記事が分割されるようになります。
AddQuickTag」プラグインで分割用のタグを登録しとくと良さそうです。

AddQuicktag — WordPress Plugins

TinyMCE Advanced」プラグインを使っていたら、「改ページ挿入」ボタン(Split Page)が追加できるようです。

TinyMCE Advanced — WordPress Plugins

CSSでカスタマイズ

当ブログではCSSは下記のようにしました。


.split-nav {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
      -ms-flex-pack: center;
          justify-content: center;
}

.split-nav span,
.split-nav a {
  display: block;
}

.split-nav span {
  height: 32px;
  margin: 0 4px;
  padding: 0 12px;
  line-height: 32px;
  font-weight: bold;
  color: #FFFFFF;
  background: #4A3C37;
}

.split-nav a {
  text-decoration: none;
}

.split-nav a span {
  font-weight: normal;
  color: #4A3C37;
  background: #f2f2f2;
  -webkit-transition: 0.4s;
  transition: 0.4s;
}

.split-nav a:hover span {
  color: #FFFFFF;
  background: #4A3C37;
}

スマホのみ分割されるようにする

上記の方法までは、PCやスマホ全てで記事が分割されるので、それをスマホのみ有効にします。
下記のコードを「functions.php」内に書きます。


function no_pageing_hook( $post ) {
    global $pages, $multipage, $numpages;
    if ( ! wp_is_mobile() ) {
        $multipage = 0;
        $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;
    }
}
add_action( 'the_post', 'no_pageing_hook' );

試しにこの記事で無駄に分割してみます。
スマホで見るとここで分割されてます。

おわり

スマホだとここは2ページ目です。

このブログではこの機能を使うことはあまりなさそうですけど、分割したい時は「<!–nextpage–>」と書くだけですし、一応備えとけば良いかな、と。
では、以上です。