3大「WordPressに慣れていない人がやってしまいがちだけど、こっちのほうがいいのになぁ」って思うこと

どーもどーも。最近めっきりネタストックの出来ていないマイペースたんです。
この記事は12/1~12/25の期間、毎日ブログ記事を数珠つなぎにしていく「WordPress Advent Calendar」の第19日目として書いております。
18日目の@kamiyamさんから引き継いでの記事でございます。

とはいえ、最近これはいいなぁと思ったネタはもうすでに先月書いてしまったし、V3.3はまだ全然触れてないし、最近理解を新たにしたループについての話はkzさんがさらっとスマートに書いてしまっていたりで、、、困った困った。でも考えました。


ここ最近、ありがたくも自サイトからWordPress関連のちょっとした作業依頼をいただく機会が増えました。
ご依頼内容としては、「デザインやプレーンなサイト構築についてはこなれているけれど、どうもWordPressに組み込んだ時に言うことを聞いてくれないからなんとかしてー」というようなものが多いです。
こちらとしても、通常のサイト構築の合間に気分転換+お小遣い稼ぎとして出来ますので、ありがたくお請けしております。

そんなわけで、他人の作ったテーマのソースを読む機会がふえたわけですが、その中で
「あー、どうしてこうしちゃったのかなぁ。こっちのほうがいいのになぁ。。。」
と思ったことを3つ挙げてみたいと思います。

1.コアをいじるよりもfunctions.phpを使おう

WordPressに慣れていない人がやりがちなのが、闇雲にぐぐってHitした結果を手当たり次第に試してしまうこと。
闇雲にぐぐっても何かしらの答えが出てくること、それがWordPress最大のメリットでもあるのですが、バッドノウハウや古い情報も溢れています。

よく遭遇するのは、

「wp-includes/******.php の◯行目を以下のように書き換えます」

っていう、WordPressのコアファイルをいじっちゃう系ですね。

もちろん、コアを書き換える危険性をちゃんと把握したうえでやるのなら自己責任であり、外野がとやかくいう事でもないのですが
初心者さんがこれをやってしまうと、WordPress自体をアップグレードしたときに

「うわーもとに戻ってる!」

とか、

「あれ、どこをどう直したんだっけ??」

とか、
まぁいろんな悲劇の報告例が後を絶ちません。(つまりは、私自身もやっちゃったよーって意味なんですが)

私ですと、今でこそコアを書き換える系の記事に出会ったらそっとタブを閉じるか、同様のことを実現するためのフックをCodexで調べたりするわけなんですが、初心者さんはそのあたりの勘所がわからないので苦労することでしょう。

コア書き換え系のTipsに出会ったら、検索キーワードに「functions.php」を追加してみましょう。
将来訪れる悲劇を、回避できるかもしれません。

2.テンプレート階層を理解してなくて無駄なif文を書いている

WordPressを始めるとみんなやりたがるのが、「特定のページやカテゴリだけテンプレートを変える」ということ。
その時に、どっかから拾ってきたif文とincludeをこんな感じでコピペしてるケースが多数。

<?php
if ( is_category('1')|| is_category('3')) {
include(TEMPLATEPATH . '/category1.php');
} else {
include(TEMPLATEPATH . '/category3.php');
}
?>

みたいなやつ。

includeでテンプレートを呼び出す方法って、3.0でget_template_partタグが出来てから非推奨になってるはずなんですよね。
けど、2.x系の時に書かれた記事がいまだに検索上位に出てくるもんだから、仕方ないといえば仕方ない。。。

#追記
header-2.phpとかfooter-news.phpとかsidebar-right.php を読み出したいときなんかにも
include(TEMPLATEPATH . ‘/header-2.php.php’) とか書いてあるのに遭遇しますが、
この場合はそれぞれ get_header( ‘2’ ), get_footer( ‘news’ ), get_sidebar( ‘right’ ) って感じで大丈夫です。

固定ページの場合

固定ページの場合、if文を書かなくても
page-1.phpやpage-3.phpというファイルを作っておけば、固定ページのidが1なり3の時は勝手にそっちが適用され、それ以外の場合はpage.phpが適用される決まりになっています。
(IDじゃなくスラッグ名を使って、page-staff.phpとかpage-company.phpとかの方がわかりやすいし優先度高いのでおすすめ)

アーカイブページの場合

カテゴリやタグアーカイブページの場合も、category-3.phpとかcategory-news.phpとかtag-mofumofu.phpとか作っておけば、if分岐書かなくても大丈夫です。

投稿個別ページの場合

single.phpの場合はちょっと異なっていて、single-example.php ファイルを作っておいた場合、exampleカテゴリの時に適用されるとおもいきや、そうではなく’example’という「カスタム投稿タイプ」が使われていた場合に適用されます。

なので、カテゴリ毎にテンプレ切り替えたいなら、残念ながらif文は書かないといけないです。
でも、includeじゃなくてget_template_partタグを使ったほうよいです。
get_template_partの認知度が低すぎるんじゃないかと個人的には懸念している次第。

sinple.phpの中身(例)

<?php get_header(); ?>
<?php
if ( in_category( array( 1, 'news')) {
get_template_part( 'content','1' );
} else {
get_template_part( 'content' );
}
?>
<?php get_sidebar();?>
<?php get_footer(); ?>

で、カテゴリ1とnewsスラッグのカテゴリは、content-1.phpをインクルード、その他のカテゴリはcontent.phpをインクルードします。

とりあえずここ読みましょう↓

でも実際は、次に書く3.の方法で解決できてしまうケースのほうが多いので、if+get_template_partを使うことはそこまで考えなくていいんじゃないかと思っています。

3.body_classタグを使って、CSSだけでいろいろやる方が断然楽 【おすすめ】

実際は、if文を書くまでもなく、さらにテンプレ分けすらしなくても、CSSだけでなんとかなる場合も多いわけで。


っていう開始タグの部分を、

<body <?php body_class(); ?>>

と書くだけでCSSでやれることが増えるので、PHPは書けないけどCSSなら書けるって人はぜひ試してください。

詳しくはここ読んで↓

##追記
post_classタグもあるので、よきにはからうべし。このタグは「投稿フォーマット」を使うときには必須ですね。

おまけ. 過去記事紹介

他には、ページタイトルを画像で出したいがために、似たようなテンプレートを量産してしまっているパターンがいくつかありまして!
ページスラッグやカテゴリスラッグを取得し、各ページタイトル部分を画像で出力[WordPress使えそうなスニペットシリーズ]』あたりを活用していただくとテンプレの数がすっきりするかと思われます!

以上です。
WordPressとのお付き合い歴はまだ長くないけど、もっと距離を詰めたいって方はぜひ意識してみてください。


あと、個人のブログも有用ですが、併せてCodexも見るようにする癖を付けた方が良いです。
見切り発車でフォーラムで質問して意味不明なタグ付けされるケースも減るんじゃないでしょうかね。

明日は、あなたも私もきっとお世話になっているあんなプラグインやそんなプラグインを開発していたり、dogmap.jpとかでナイスでエロいTipsを怒涛のように配信している@wokamotoさんが満を持して登場です!!

コメント / トラックバック 8 件

3大「WordPressに慣れていない人がやってしまいがちだけど、こっちのほうがいいのになぁ」って思うこと | マイペースクリエイターの覚え書き - Diary2011/12/19 20:30

[…] 3大「WordPressに慣れていない人がやってしまいがちだけど、こっちのほうがいいのになぁ」って思うこと | マイペースクリエイターの覚え書き. […]

WordPress をとにかく速くする (WordPress Advent Calendar 2011 20日目) : dogmap.jp2011/12/20 10:01

[…] さんのエントリはこちら。3大「WordPressに慣れていない人がやってしまいがちだけど、こっちのほうが…去年は PHP Advent Calendar に参加して「匿名関数と無名関数 (PHP Advent Calendar […]

3大「WordPressに慣れていない人がやってしまいがちだけど、こっちのほうがいいのになぁ」って思うこと | マイペースクリエイターの覚え書き | WEB制作アンテナ2011/12/20 17:20

[…] 3大「WordPressに慣れていない人がやってしまいがちだけど、こっちのほうがいいのになぁ」って思うこと | マイペースクリエイターの覚え書き. 関連記事は見つかりませんでした。 This en […]

Twitter 人気のつぶやき 12/17~12/23 2011 | Webクリエイターボックス2011/12/24 10:56

[…] 8. WordPress:3大「WordPressに慣れていない人がやってしまいがちだけど、こっちのほうがいいのになぁ」って思うこと […]

WordPress Advent Calendar 2011 まとめ | わーどぷれすっ!2011/12/26 23:22

[…] 3大「WordPressに慣れていない人がやってしまいがちだけど、こっちのほうがいいのになぁ」って思うこと […]

空気ドランカー - 2012-01-132012/01/13 00:48

[…] やりがちなのが、闇雲にぐぐってHitした結果を手当たり次第に試してしまうこと。 3大「WordPressに慣れていない人がやってしまいがちだけど、こっちのほうがいいのになぁ」って思うこと […]

:よねぢ| 2014/09/02 09:55

はじめまして。
mypace custom themeで、ここを知ってから度々覗かせていただいております。
CSSは少しわかるけど、PHPはほぼわからないWordPress初心者です。

紹介されていた<body をさっそく使おうと思ったのですが、実際に出力されるclass名を見ると、(Codexでもですが)すごく長い名前になってしまっています。
CSSでデザイン指定する際は、あの長い名前を記載しないといけないのでしょうか?
超初心者の質問ですみません。よろしくお願いします。

:mypacecreator| 2014/09/08 23:25

>よねぢさん
mypace custom themeのご利用ありがとうございます^^

さて、コメント欄にPHPコードが書けないのでアレなんですが、
body_class(); タグをどう使うかというご質問ですね?

このブログでもbody_classを使っていまして、以下のように出力されています。

class=”single single-post postid-1393 single-format-standard”

コレは、決して長いclass名なのではなく、
single
single-post
postid-1393
single-format-standard

という、4つのclassが出力されているのです。
ですので、必要なclassだけを使えばよくて、全部使う必要はないのです。

たとえば個別記事ページだけ、記事タイトルの色を青くしたいとかであれば

.single .posttitle {
color: blue;
}

みたいな感じで使います。

以上で答えになっていますでしょうか?もし聞きたかったことと違った!ということであれば、もう少し詳しい状況をお返事いただければと思います。

コメントをどうぞ

メールアドレス (必須・公開されません)
コメント本文

  • スパム・迷惑コメント投稿防止のため、メールアドレスの入力が必須ですが、公開はされません。何卒ご協力のほどお願いいたします。
  • 投稿いただいたコメントは管理者のチェック後掲載しておりますので、即時には反映されません。
  • 記載内容に関する批判や間違いの指摘などはそのまま掲載する方針ですが、投稿内容と無関係な誹謗中傷、一方的な罵詈雑言の場合は削除させていただく可能性があります。
  • 通常業務の合間にコメントチェックをしておりますので、すべてのコメントへのお返事が出来ない場合もございます。あらかじめご了承ください。
  • 管理人個人への連絡等は、コメント欄ではなくコンタクトフォームをご利用ください。

今年もスタッフしました!

書籍を執筆しました

WordPress 標準デザイン講座【Version 4.x対応】


翔泳社さんより、2015/02/27発売です。

寄付歓迎(・ω<)☆

当ブログの記事があなたの役に立ったら、気が向いたらでいいのでドネーションいただけると更新の励みになります!
気が向いた方はこちらから

ブログ内検索