【wordpress】wordpressのエラー判定および表示

Author:

wordpressのcodexでerror objectが戻り値となっている場合、
下記のような関数が使えます。

is_wp_error

エラーかどうかの判定を行います。

get_error_message

エラーメッセージを表示します。

get_error_code

エラーコードを表示します。


$ret = wp_create_user($user, $pass, $email);
if (!is_wp_error($ret)) {
// 正常
} else {
// 異常
echo ‘error! ‘ . $ret->get_error_code() . ‘:’ . $ret->get_error_message();
}

【WordPress】外部のPHPファイルからWordPressの関数を呼ぶ

Author:

例えばWebアプリなどを作成していて、wordpressの関数を呼びたくなった場合。
Webアプリからwordpressのユーザーを設定するとか、
ユーザーを共有したいとか、そんな類ですね。

もちろんDBに直接アクセスしてもいいのですが、
下記2行を追加させればWordPress内の関数を自由に呼べるようになります。

define('WP_USE_THEMES', false);
require('./wp/wp-blog-header.php');

この後にwp_create_userとかの関数を使えば外部Webアプリから
wordpressのユーザーを追加できるし、
get_user_metaとかでwordpressのメタ情報を引くこともできるし、
覚えておくと役に立ちますよ。

【wordpress】ショートコードを意図的に拒否して普通に表示させる

Author:

ショートコードは[]で囲むだけで設定されたものが呼ばれてしまいますが、
普通に[]を使いたい場合もありますよね。
そういう場合は[[]]という感じに二重に囲めば普通に表示されてくれます。
覚えておくと便利ですよ。

【wordpress】add_menu_pageの記述方法

Author:

以前からadd_menu_page関数の使い方を見ていると
何か違う書き方しているページが多かったりして混乱していたのだけど、
ようやく分かった。
2.9以前の書き方と3.0以降の書き方が違うのですね。

2.9のソース(wp-includes/plugin.php)を見るとこうなっている。

function add_menu_page( $page_title, $menu_title, $access_level, $file, $function = '', $icon_url = '', $position = NULL ) {

第4引数はファイル名。外部ファイルを読み込むように作られているっぽい。
第4引数のファイルを読み込み第5引数の関数を呼ぶのですかね。

んで、3.0のソースを見るとこうなっている。

function add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function = '', $icon_url = '', $position = null ) {

第4引数はmenu_slag。サブメニュー作るときに使う変数名です。
requireやらincludeで読み込んだファイルから第5引数の関数が呼ばれます。

しかし、Codexを見るとこう書かれている。
「If the function parameter is omitted, the menu_slug should be the PHP file that handles the display of the menu page content.」
つまり、第5引数を省略した場合、第4引数はPHPファイル名にしろ、と。
分かりづらいよこれ!!

さらにひどいのが、第5引数を省略して第4引数だけにしたはずなのに動いてくれない。
うーむ、なんでだろう。

結果、wp-adminディレクトリから相対的に読まれているのでした。
wp-admin/test.phpとか置いたら動きやがる。
functions.phpに書いたからそこからの相対パスになると思ったら全然動かなかったのです。
海外のサイトとかでは第5引数設定してfile_get_contentsやらincludeなどで
読みなおせばいいとかなんとか。

なかなかくせのある関数なので気をつけましょうね。
プラグイン使ったほうが楽か。

【wordpress】twentyfourteen_get_featured_postsフックの呼び元

Author:

自作テーマでfeaturedを使おうとしたので、
twentyfourteenではfeatured-postがどうやって生成されているかを調べようとした。
どうやらadd_theme_supportで登録してtwentyfourteen_get_featured_posts関数で生成しているっぽい。
でもapply_filterがひとつあるだけだぞ。

調べてみたところ、inc/featured-content.phpからこのフックを呼び出しているっぽい。

add_filter( $filter,                              array( __CLASS__, 'get_featured_posts' )    );

これですね。
この先のget_featured_postsでget_posts関数を使って投稿一覧を取得していました。

【wordpress】記事に編集ボタンをつける

Author:

テーマを自作した時とか、もしくは使っているテーマに編集ボタンがない場合、
もしくは編集ボタンの位置が気に入らない場合などは
以下のコードを追加すれば編集ボタンを追加できます。

edit_post_link('編集');

なお、第二引数、第三引数は前後のタグを指定できます。
例えば、

edit_post_link('編集', '<span>', '</span>');

とすればspanタグで囲まれるようになります。

【wordpress】WP_Queryって何なのさ

Author:

ブログのトップページには最新の投稿がずらりと並びますよね。
その並びの中にもう一つループを追加したり、
そのループを書き換えたりするクラスがWP_Queryというものです。

カテゴリー一覧とかウィジェットにも使われていますよね。

使い方は
$query = new WP_Query($args);
こんな感じ。
argsに入れたい条件を記入します。

詳細はcodexにもあるけど、一つなら=でつないで書く。
new WP_Query(‘cat=4’);
二つならarrayにする。
new WP_Query(array(‘cat’=>4, ‘tag’=>’game’);

んで、投稿を取得する際のhave_post、the_postに注意。
have_postやthe_postはクラスのメンバにしないといけません。
しかしthe_titleやthe_contentはクラスのメンバにする必要はありません。

while ( $query->have_posts() ){
$query->the_post();
the_title();
}

こんな感じになります。the_postにクラス忘れるとメインループのデータが取得されてしまいます。
WP_Queryのthe_titleとかやってもエラーになります。