WP: WP_Query について

WordPress のコードをみていて,重要そうなクラスがあったので調べてみた.

The WordPress Query class.
WP_Queryとは,WordPress でブログの投稿やページの情報を取得する場合に使うクラス.とのこと.

どのような検索ができるのか?ざっと確認しておけばよいのでしょう.

参考: 関数リファレンス/WP Query
参考: いっつも忘れるWP_Queryの使用方法とパラメータ一覧。がっつり整理してみた
参考: WP_Queryの使い方をPHPコードにまとめた便利なコード・スニペット
参考: これは便利!WordPressのWP_Queryでよく使うコードスニペット

WP: テンプレートタグ

WordPress のテンプレートタグは,幾つかの種類があるようだったので,まとめた.

テンプレートタグファイルは wp-includes ディレクトリに格納されている.

インクルード タグ
インクルード タグは、あるテンプレートファイル(例えば index.php)の中で、他のテンプレートファイル(例えば header.php)の HTML や PHP を実行するために使う.

条件分岐タグ
条件分岐タグ (Conditional Tag) は、テンプレート ファイル内で表示される内容や、特定のページ内容を表示する条件を設定するのに使用する.
注: 条件分岐タグが使えるのは,WordPress の posts_selection アクションフックの後のみとのこと.

WP: マルチサイトとは?

コードをみていて,

is_multisite()

という処理があったので,調べてみました.

ざっくりまとめると,マルチサイトとは,1つの WordPress で複数の WordPress を運用できる機能らしいです.
導入にはメリット,デメリットがあるようです.
特に気になるのは,プラグインで未対応のものがあるとのこと.
何かしら理由のあるユーザ以外は,利用しない方が良い機能と感じますね.

参考: WordPressマルチサイトのメリット・デメリット・設定方法

Google Analytics の計測が出来ない場合に確認すること

先日より Google Analytics の計測が出来ていなかったので,原因を調べてみた.
結果,WordPress サイトのテーマを変更した際に,header.php の に Analytics のトラッキングコードを入れていなかったため,計測が出来ていなかったことが分かった.
早速,WordPress 管理画面より [外観] – [テーマエディター]を選択し,テーマヘッダー(header.php)のタグにトラッキングコードを直接追加した.
約1分ほどでリアルタイム計測が動作した.
WordPress サイトのテーマを変更した際には,忘れずに Analytics のトラッキングコードを追加しておかなくてはいけないですね.
でも,こういう作業って年に1回…って感じで忘れちゃうんだよなー

参考: Googleアナリティクス導入時の設定・設置方法【初心者向け】

WP: WordPress メモ

WordPress のコードをザーとみていて,固有の機能,単語など調べたのでメモしておきます.

パーマネントリンクとは

パーマリンクとは,Webページ毎に設定したURLのこと.
例えば,https://www.xxx.com/yyy/zzz/
というWebページのURLであれば,後半の/yyy/zzz/ がパーマリンク.

テンプレートタグ

テンプレートタグは,ブログのデータを動的に表示するため,テンプレートの中で使用するタグ.
参考: テンプレートタグ

.htaccess

wordpress の .htaccess は「存在しないファイルは全てアプリで処理する」設定になっているとのこと.

参考: .htaccessとは?
参考: .htaccess の書き方(リダイレクト編)

WordPress のコードをざっくりみる方法

参考: WordPressのコアファイルの仕組み。3ステップでざっくりまとめ。

ざーとファイルについては眺めたので,次はブログが表示されるフローをみていきたいと思います.

XML-RPC機能は、アプリなどを使ってリモートから投稿出来る機能

xml-rpc に関するファイルがあったので,WordPress ではどのような使われ方をしているのか調べた.

xmlrpc.phpは管理画面からではなく、他のプログラムやサイト外からワードプレスをコントロールするための様々な機能を提供しています。
例として下記のようなものがあります。

投稿をメールで作成
投稿を編集
投稿の削除
ファイルのアップロード
コメントの追加削除
コメントの編集
ピンバック(リンク元がリンク先に通知する機能です)

ピンバック

ピンバックを使用するつもりはないけど,よくまとめられていたのでメモ.
参考: ピンバックとは?正しい意味とWordPressに設定する方法

WP: フィルター,アクション フックについて

PHP の記述もざっとチェックしたので,次は WordPress 仕様についてチェックしていきます.
フィルター,アクション フックは特徴的な機能みたいなので最初にチェックしてみます.

次のサイトの記事を見るとざっと機能について把握することが出来ました.
とりあえずは詳細な情報より,分かった気になれるまとめられた記事が良いですよね.

参考: WordPressカスタマイズの幅が劇的に広がる、フィルターフックとアクションフックの使い方

簡単にまとめると,あらかじめ定義されている処理タイミングに処理を追加する機能のようです.
では,どういう定義されている処理タイミングがあるかというと,以下のページに書かれているはずです.

参考: プラグイン API/フィルターフック一覧
参考: プラグイン API/アクションフック一覧

サンプルで1つ試してみます.
以下のフィルタを使用してみます.

the_title
画面を表示する前にデータベースから取得した投稿タイトルに適用される。(トラックバックなどの他の操作でも使用)
以下のように WordPress では使用されています.
1
2
3
4
5
<p class="wp-embed-heading">
	<a href="<?php the_permalink(); ?>" target="_top">
		<?php the_title(); ?>
	</a>
</p>

functions.php に以下の処理を追記します.

1
2
3
4
function my_the_title($title, $id) {
	return 'ID='.$id.$title;
}
add_filter('the_title', 'my_the_title', 10, 3);

WordPress を起動すると記事タイトルの先頭にIDが付加されました.

ここまで,やって以下の疑問が沸きました.
1. 処理は functions.php に追記で良いのか?
2. add_filter() の第4引数を調べる方法は?

apply_filters( 'the_title', $page->post_title, $page->ID )

ここをチェックするしかないのかな?

今後,調べたいと思います.
まぁ,フィルター,アクション フックはなんとなく分かった気になれました.

WordPress サイトが何も表示されない場合の対処方法

問題なく表示されていた WordPress サイトが何も表示されない場合(真っ白),直前に行った変更が原因と考えられます.

しかしながら,エラー内容が表示されないために対処方法が判断できず,困ってしまうことが多々あるかと思います.

ですから,まずエラー内容を出力するようにします.

WordPress サイトのエラー出力を行う方法

1
2
3
4
// wp-config.php ファイルに以下の変更を行う.
define(‘WP_DEBUG’, false);define(‘WP_DEBUG’, true);

上記の変更で大抵のエラー内容は判断できると思います.
あとは,問題のファイルの変更を元に戻すなり,問題になったプラグインを使用しないよう変更するなり対処すれば良いと思います.

場合によってはキャッシュのクリアも必要になるかもしれません.
こういう場合,git とかって便利ですね.

WordPress 開発の Tips

▼ デバッグモード
– wp-config.php WP_DEBUG 定数を false → true にする.

▼ wordpress のログイン画面
http://サイトのURL/ファイルを配置したディレクトリ/wp-login.php

▼ プラグイン
– wp-content/plugins ディレクトリに配置するとプラグインとして認識される.

▼ コマンドラインから操作
WP-CLI を使用する.
$ brew install wp-cli
$ wp –info

プラグインを有効化する.
$ wp plugin activate my-first-plugin

▼ 動作について
– URL クエリとして与えられたリクエストを基にグローバル変数 $wp_query を作成する.

– テンプレート処理順序: テンプレートのアーカイブページ,フロントページ,個別ページなどそれぞれの 〜.php ファイルを参照して,なければ index.php を参照する.

– 参考: WordPress Codex 日本語版 テンプレート階層

▼ ループ処理について

1
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

コロンを使った記述がよくある.

– 参考: 【PHP】if文の書き方について【波括弧{}、コロン:】

▼ 開発資料
WordPress Codex 日本語版

ローカルマシンに WordPress をインストールする方法

たまに WordPress プラグイン作成やテンプレート作成の調査をしたりするんですが,そのたびに環境構築手順を忘れてしまうので,メモしておきます.

私はローカルに WordPress 開発環境を作る場合以下のものを使用しています.
– MAMP
– WordPress
– PHP Storm

1. MAMP をインストール

まず,最新の MAMP をダウンロードしてインストール.

MAMP 4 以降は以下のメッセージが表示されるようです.
適宜,対処します.
あと,私が遭遇した「MAMP で phpMyAdmin が使用できない」問題についてもメモしておきます.

▼ インストール後に表示されるメッセージ

MAMP / MAMP PRO 4 uses MySQL 5.6 as its default database server. Therefore, existing data has been copied to folders named …/db/mysql56. Your original data will be kept untouched in …/db/mysql.
You should convert the data right after the first start of MySQL using the command 'Upgrade MySQL databases' (⌘⌥U) from the Tools menu.

MAMP / MAMP PRO 4はデフォルトのデータベースサーバーとしてMySQL 5.6を使用します。 したがって、既存のデータは... / db / mysql56という名前のフォルダにコピーされています。 元のデータは... / db / mysqlに変更されません。
「ツール」メニューの「MySQLデータベースのアップグレード」(⌘⌥U)コマンドを使用して、MySQLの最初の起動直後にデータを変換する必要があります。

▼ MAMP で phpMyAdmin が使用できない場合の対処方法
【Tips】「MAMP」でphpMyAdminが表示されない(アクセスできない)ときの解決法!

2. WordPress をインストール

MAMPを使ってローカル環境にWordPressをインストールする方法

最初に WordPress 用のデータベースを MySQL に作成しておきます.
データベース名,ユーザ名,パスワードを指定します.

データベース作成時には「照合順序」を「utf8_general_ci」と指定する.

つぎに WordPress のセットアップを以下の URL にアクセスして行います.
http://localhost:8888/wordpress/wp-admin/setup-config.php

たまに safari ではうまく動かないことがあるそうです.
そのようなときは chrome で試します.

サイトタイトル,ユーザ名,パスワード,メールアドレスを指定します.

WordPressでソースコードをハイライト表示するプラグイン

ソースコードの投稿もハイライト表示できるように WP-Syntax プラグインをインストール。
なかなか綺麗に表示できてます。
対応する言語も沢山あります。
行番号も表示されて良いですね。

1
2
3
4
5
6
@interface MyTestClass : NSObject {
    NSString *myTestString;
}
- (void)setMyTestString :(NSString *)testString;
- (void)printMyTestString;
@end