WordPress メモ, 2014年大改修

WordPressテーマ imbalance 2 から今風のHexaにしたり、テーマを修正したり、自分にとっては新たな(だけど多くは普通は使っている)プラグインを使ったり、思い切ってデータを移行したり。

改ページの扱いについて(自分向け覚え書き)

何度も書いている通り、このブログは投稿に追記するケースが非常に多いため、WordPressのnextpageタグを多用している。
ところがこのnextpageタグを使用した場合、私は各ページ毎に(サブ)タイトルを持つ投稿なのに、単に「1 2 3」みたいなページ番号しか出力されないのが不満であった。
とりあえずは抜粋にページ毎のサブタイトルを転記して、とおよそ自動化とはかけ離れた運用だった。
とは言え、それをどう自動化すべきかの設計が長らく見えていなかった。

例えば、「たがみよしひさ」の漫画毎の投稿をするとした場合、下記の様にしたいという要望がずっとあった。
投稿のタイトルが「それさえもおそらくは」として、当然各サブタイトルへのアンカーリンク、更に自分が今見ているページはアンカーリンクになっていないのは当然として。
1. それさえもおそらくは暴走族とその成長物語
2. それさえもおそらくは鬼籍の姉を探す旅
3. それさえもおそらくはタイムパラドックス
4. それさえもおそらくは俺は殺されるのは好きじゃねぇ
5. それさえもおそらくは北千住は今日も平和です
というのを、ブログの一覧ページだと抜粋の直下、投稿だと各ページの末尾に追加、みたいな…
ところがnextpageそのもの使い方やCSSでの表示カスタマイズの解説ページのみWeb検索でヒットするが1 、こういった要望に答えてくれる投稿が無く調査が困難していた。

そんな中、WordPressで投稿ページを分割する機能を少し使いやすくしてみた【functions.phpにコードを追加する(フロント編)】 – UKLab開発者ブログ にある、
<!--nextpage-->
で改ページだけをさせるのではなく、
<!--nextpage-->それさえもおそらくは暴走族とその成長物語<!--/nextpage-->
で改ページとサブタイトルを紛れ込ませるショートコードとは言い難い方法で何とかなりそうだと。
ただ、この記事自体の実装は自分にはオーバースペックなので、置換のロジック程度しか参考にしなかったが。

そこで実装になるが、申し訳無いですが、ソースコードの掲載は見合わせます。
と言うのは、それぞれのサイトで状況が違い、仮に私が掲載したコードをそのままコピペしても動かない可能性があり、汎用性を持たせるとコードが複雑化して本筋が見えなくなるので。
ましてHTMLタグやCSSクラス名を直書きしてるのでプラグイン化なんかもっての他で、極論すれば私だけが分かっていれば良い事なので。
とは言え、注意点としては下記。

the_excerpt()の修正は無し、the_content()はショートコードモドキ(口汚くてすみません、ヒントを与えていただいただけでも非常に感謝しております>上記ブログ主サマ)を他のタグに置換して出力して、それぞれの後方にページ一覧を追加する必要があるが、Jetpackとの併用時、Jetpackの「共有」を任意の場所に表示させる方法 | Web技術Tips を考慮する必要がある?…忘れました。

一番面倒なショートコードモドキのみ検索してサブタイトルを抽出するロジックは下記。
…だけど、もしかしたら(もしかしないでも)、行頭・行末に何も無く下記のショートコードモドキのみの行しかヒットしないみたいで、それはそれで便利かと。

$pattern = '/<!\-\-nextpage\-\->(.+?)<!\-\-\/nextpage\-\->/';
$strings = array();
preg_match_all( $pattern, $post->post_content, $strings );

他には下記。

  • is_singular()かそうでないか、1ページ目かそうでないか、で色々と判断分岐を必要とするシーンが存在する。
  • ついでなので2ページ目以降は抜粋を表示している。
  • moreタグとの共存は考慮せず、と言うよりも、nextpageとは基本的には背反の運用をしている…と言うかmoreタグはこのサイトでは使用せず抜粋を使っている。
  • このショートコードモドキと通常のnextpageタグとの共存は可能なので、これを導入して慌てて通常のnextpageタグを書き換える必要は無い。

問題点と言うかちょっと気持ち悪い点としては、1ページ目の扱い。
1ページ目のサブタイトルは苦肉の策として投稿のタイトルにしている点で、1ページ目にサブタイトルが存在する場合、このショートコードモドキを使用できないので既存のサブタイトルのHTMLタグなりを使用する必要がある点か。
例えば前述だと、下記の様になる。
1. それさえもそらくは
2. それさえもおそらくは暴走族とその成長物語
3. それさえもおそらくは鬼籍の姉を探す旅

基本的に1ページ目はそれ以降のページヘの前口上みたいな位置付けなので基本影響を受けない運用方にしているので問題が無いとも言えるが。
完全なショートコードにして引数でコントロール、という実装がスマートなのかもしれない。
なので将来的には書き換えるかもしれない。

他に…

  • ページのタイトルにサブタイトルが含まれていないので(SEOどうのこうのを考慮するのはオーバースペックではあるが)、それも対応が必要になる。
  • ページ一覧が存在する時、Continue readingは不要だと思う…けど、どうコントロールすれば良いのかは調べていない。
  • 「次のページ」「前のページ」のリンクの実装はしてないけど、ある方が良いのか無くても問題無いのか。
  • 投稿ページの構成は、「(本文脚注ページ一覧・SNS共有ボタン・投稿メタ情報)・関連記事」となっているが(カッコ内はthe_content()で表示、斜体はコーディングでコントロール可能)、プラグインによってはこちらでコントロール出来ないのが辛い。

更に、アーカイブページでは各ページの追記年月日ではなく、その記事を初めて投稿した年月日しか表示されないのは如何とも。
今更だけど、各ページで区切るのではなく、カテゴリを作り、それに紐付けて投稿していく方法が普通なのかもしれないけど、今更後の祭り、だよなぁと。
個人的にはタグが増えるのにはそれ程気にしないけど…だからと言ってあるタグに紐付いた投稿が1件だけだと色々と考えてしまうが、カテゴリが増えるのには妙に抵抗があったので。

2015/09/16

Menu of this post

  1. 1. WordPress メモ, 2014年大改修
  2. 2. 改ページの扱いについて(自分向け覚え書き)
  3. 3. これは絶対反則だと思うけど(もしくは推奨されないかも)、レンタルサーバのWordPressをローカルにどかっと「インポート」して気を付けた点(自分向け覚え書き)

Footnotes

  1. 1. 正直ねぇ…Macのアプリを調べてた時もそうだけど何なの…と。悪く言えば「小学生の自由研究かッ!(くわッ)」と思わず…いわゆるブロガーとは「記事を広く浅く量産する事が最大目的なのかッ!(くわッ)」と。