【メモ】WordPress, テーマ内のJavaScriptをwp_enqueue_scriptに追加

テーマ内に置いたJavaScriptファイルをwp_enqueue_scriptで呼び出せるように設定する。

functions.php

function js_enque_method() {
   wp_register_script('example_script',get_bloginfo('template_url').'/js/example.js','jQuery','1.0');
   wp_enqueue_script('example_script');
}
add_action('wp_enqueue_scripts', 'js_enque_method');

テーマ内に[js]フォルダを作り、そのフォルダ内に[example.js]があります。
example.jsのVersionは1.0です。
example.jsはjQueryを必要とします。

WordPress, ループをカスタマイズする3つの方法

WordPressでループをカスタマイズするメモ。

query_posts()
http://wpdocs.sourceforge.jp/テンプレートタグ/query_posts

global $query_string;
// 全投稿出力
$posts = query_posts($query_string.'&posts_per_page=-1');
 
if (have_posts()) : while (have_posts()) : the_post();
   // ループ処理
   endwhile;
else;
   // not found
endif;
 
// ループをリセット
wp_reset_query();

オリジナルのループを元にカスタマイズしたい時に使用する。
wp_reset_queryを最後に実行する。

WP_Query()
http://wpdocs.sourceforge.jp/関数リファレンス/WP_Query

$args = array(
   'post_type'=>'page',
   'post__in' => array('595', '33', 44)
);
$query = new WP_Query($args);
 
while($query->have_posts()) : $query->the_post();
   // ループ処理
endwhile;
 
// queryをリセット
wp_reset_postdata();

オリジナルのループを作成、複数のループを作成。
wp_reset_postdataを最後に実行する。

get_posts
http://wpdocs.sourceforge.jp/テンプレートタグ/get_posts

$myposts = get_posts('posts_per_page=5&offset=1&category=1');
foreach($myposts as $post) :
   setup_postdata($post);
   // ループ処理
endforeach;

リセットはいらない。
引数は配列。

WordPressプラグインJetpackスゲ!

WordPressに新しく登場したAutomattic謹製Jetpackプラグインがスゴイ件。

http://jetpack.me/

詳しくはWordPress.com 日本語ブログ「インストール型 WordPress を Jetpack でパワーアップ」をご覧下さい。

良くわかんないよー、な人はまずインストールしちゃいましょう。
プラグイン > 新規追加
検索:jetpack
でインストールできるはずです。

次にWordPress.comのアカウントIDとパスワード入力を求められるので入力しましょう。
Akismet使うのに多分アカウントは持ってるはずです。
[Authorize]してJetpackの各機能を使うことができます。

Jetpackメニュー画面で各項目の「さらに詳しく」をクリックするとどんなことができるか日本語で説明が出てきます。

Jetpackの名に恥じない色々ま機能がパッケージされた強力なプラグインです。

WordCamp Fukuoka 2011 協賛、スプラッシュムービー

いよいよ本日、2011-02-19 WordCamp Fukuoka 2011が開催されます。

少しだけお話しさせていただくのですが、その内容に合わせて本日1日限りコンテンツ表示前にスプラッシュムービーが表示されます。
ご容赦ください。

update

2011-02-21
こちらのページだけスプラッシュムービーが表示されるように変更しました。

「うざい」
「じゃま」

と感じられた方は

スプラッシュムービー「ダメ!絶対!」という気持ちを共有してください。

WordPress, コメントスパムをメールアドレス指定でブロックしたい

WordPressでコメントを許可したらプラグインの Akismet を有効化しスパム対策をするのはご存知のとおり。
Akismetは大変優秀なプラグインなので大半のスパムはブロックしてくれますが、日本語のスパムは取りこぼすことがあります。

友人のブログがスパムにさらされ、SOSが来たので確認したところ、同じメールアドレスから送られてきていたのでこのアドレスをブロックすればどうにかなるかと思いました。

思いましたが、Akismetには特定のメールアドレスをスパム登録する方法がありません。

Twitter で「教えてエライ人」すると@wokamotoさんが、簡単だよプラグインでできるよって教えてくれました。

プラグイン作りは簡単と言えば簡単だし、敷居が高いと言えば高いのでモゾモゾしていると、管理画面 > 設定 > ディスカッション にそれらしい項目を発見!

コメントブラックリスト
ココへブロックしたいメールアドレスを入力して「保存」するとできました。
複数入力する時は「改行」で設定すれば良いようです。
ただ、日本語の単語は入力できるけど、スパムへ振分けしてくれませんでした。

WordPress 3, sidebar.phpが無い時のget_sidebar

default テーマが添付されなくなった WordPress 3.0。

get_sidebar を実行した時に…
WordPress 3.0 以前では使用しているテーマに sidebar.php が無かったら default テーマの sidebar.php が使用されていました。

default テーマが無くなると、どうなるんだろうと思ったのですが抜かり無く代替え策が考えられていました。

sidebar.php が無いときは、
wp-includes/theme-compat/sidebar.php が使われます。

theme-compat には他に

comments-popup.php
comments.php
footer.php
header.php

が用意されています。

ただファイルのコメントに次のように書かれていたので、一時的な処置のようです。
ちゃんとテーマに footer.php, header.php, sidebar.php などは用意しておいた方が良さそうです。

This file is here for Backwards compatibility with old themes and will be removed in a future version

2010-10-09, WordPress 3.0 会議で話しました。

2010-10-09 AQUA博多 B会議室で開催された「WordPress 3.0 会議(仮)」で話しました。
結局、最後までタイトルに(仮)がついたままでした。
当日は定員の60人近い方にお越しいただき満席となり盛況に終わることができました。
ありがとうございました。

Twenty Ten テーマ
カスタムメニュー
カスタムタイプ投稿
マルチサイト

と旬の WordPress 3.0 の新機能について各スピーカーがお話しさせていただきました。

私の担当は「カスタムメニュー」でした。
当日の発表資料をアップいたします。
ご覧下さい。

acrobat.com

上記データが表示されないときはリロードするかリンクをクリックして下さい。

懇親会にもたくさんの方に参加していただき、楽しい夜を過ごしました。
思いもかけないゲストにもきていただきました。

め組の組長さんをはじめとするめ組の皆様。
日本語WordPress草創期に多大な貢献をされたtaiさん。
HTML, CSS 辞典シリーズでおなじみの大藤幹さん。
大藤さんの新著は WordPress 3.0 についてです。

スピーカー、スタッフの1人として関われたことを誇りに思います。
こう言えるのもご参加いただいた方がいたからこそです。
至らないところも多々あったのでは無いかと思いますが、ご意見をお寄せいただければ今後の参考にさせていただきます。

繰返しになりますが、本当にありがとうございました。

2010-10-09, WordPress 3.0 会議で話します。


WordPress 3.0 会議

WordPress 3.0 の新機能を紹介するセミナーイベントです。

日時 / DATE :
2010/10/09 15:00 to 18:00
定員 / LIMIT :
60 人
会場 / PLACE :
AQUA博多 B会議室 (福岡県福岡市博多区中洲5丁目3-8 AQUA博多 3F)
URL / URL :
http://wordbench.org/groups/fukuoka

2010/10/9 AQUA博多 15:00 ~ 18:00 で行われる「WordPress 3.0 会議」話します。
「WordPress 3.0 会議」はWordPress 3.0の新機能をコードを追いながら勉強会で行っていた内容をお披露目するものです。
あ〜だ、こ〜だ言いながらできると良いのですが、時間の制約もありそこまでできるのかは分かりませんがセミナーや勉強会よりも敷居は低く、しかも内容は初心者の方から中級・上級な方にも楽しんでもらえるようにと欲張りな内容になっています。

WordPress 3.0 で追加された新機能のうち以下の4項目についてお話しすることになります。

Twenty Ten テーマ
カスタムメニュー
カスタムタイプ投稿
マルチサイト

私はその内「カスタムメニュー」についてお話しします。

このブログにもいくつかエントリーしていますが、勉強会であれこれあれこれ勉強をしたものばかりです。
後日、作成したスライドも公開する予定です。

いよいよ、明日に迫りました。
すでに定員一杯のお申し込みがあるようです。
多くの人との出会いを楽しみにしています。

*補欠のお申し込みはまだ可能です。
当日のキャンセルが出るかもしれません。
ご興味のある方はあきらめずにお申し込み下さい。

ATND
http://atnd.org/events/8285

WordPress, Useragentなグローバル変数

WordPressはUseragentに関するグローバル変数を持っています。

$is_lynx
$is_gecko
$is_IE
$is_winIE
$is_macIE
$is_opera
$is_NS4
$is_safari
$is_chrome
$is_iphone

ブラウザーに合わせた設定を加えたい時とかに便利です。
もとネタ、
10 useful new WordPress hacks
Detect the visitor browser within WordPress

さらにもとネタ
Browser Detection and the body_class() Function

add_filter('body_class','browser_body_class');
function browser_body_class($classes) {
	global $is_lynx, $is_gecko, $is_IE, $is_opera, $is_NS4, $is_safari, $is_chrome, $is_iphone;
 
	if($is_lynx) $classes[] = 'lynx';
	elseif($is_gecko) $classes[] = 'gecko';
	elseif($is_opera) $classes[] = 'opera';
	elseif($is_NS4) $classes[] = 'ns4';
	elseif($is_safari) $classes[] = 'safari';
	elseif($is_chrome) $classes[] = 'chrome';
	elseif($is_IE) $classes[] = 'ie';
	else $classes[] = 'unknown';
 
	if($is_iphone) $classes[] = 'iphone';
	return $classes;
}

body_classの出力するクラスへUseragentを入れとこうぜ、な関数ですよね。

/wp-includes/ -> vars.php (source)

WordPress, テーマの選び方

簡単にインストールできるWordPress。
あっという間に終わるインストールのあとはテーマをどうするか決めないといけません。
ガリゴリとゼロから作ってみるのも楽しいけど、色々な人が作ったテーマを試してみるのも勉強になります。

WordPress 3 からは子テーマが作れるので、子テーマで自分なりの改造を施すと何もかも自分で作るより時間の短縮にもなります。

星の数ほどあるテーマの中から選ぶのが大変、あとで泣きをみないように改造しやすくてイケテルテーマを探さなくては・・・

どこで選ぶ

無難に公式テーマ配布ディレクトリでしょうか。
Free Themes Directory

公式ディレクトリ以外でも優れたテーマが配布されていたりしますが、リスクはそれなりに高くなると覚悟した方が良いかもしれません。
テーマのソースを見ることができるスキルは必要になると思います。
悪質な難読化コードを埋め込んでいる例もあるようですから。

何を基準に選ぶ

見た目(外観・デザイン)はCSSなどのスキルがあればどうとでもなるので配布されている時の見た目は関係ない気がします。

それよりも・・・

1.CSS(style.css)を見ましょう
CSSのでき(精度)が低いとあとで泣く目にあいます。

■ グローバルリセットが入っている

* {
	padding:0;
	margin:0;
	outline:0;
}

上側に空く余白がデザイン上不自然になるのを防ぐためWeb デザインでは広く使われている手法でもあるのですが、WordPressではリセットしこのままにしておくと困ったことが起こります。
ビジュアルエディタ上の1行空きが、ブラウザ出力時に反映されなくなります。
WordPressはビジュアルエディタ上の1行空きは、ブラウザ出力時にpタグで囲むことにより表現しようとします。
リセットされたままだと自分が入力した文章が入力時の見た目と出力時では違う矛盾が生じてしまいます。
さらに、入力者から1行空ける方法を奪い取ってしまいます。

*リセット後にp, h1~h6タグなどのもともと行を空けるブロック要素へ bottom プロパティの再設定がされていれば◯
Twenty Tenはグロバールリセットに近い形でほぼ全てのタグの padding, margin を 0 にしていますが再度設定しなおしています。

グローバルリセットをしそのまま放置しているテーマはWordPressへの理解度が低いと思わずにいられません。

■ ループ出力の Class, ID の設定の仕方

/* × */
.alignleft {
}
/* ◯ */
#content .alignleft {
}

CSSスキルに疑念が生じます。

2.Javascriptの読み込み
■ Javascriptの読み込みがハードコードされている。
Javascriptの読み込みはテンプレートタグ wp_enqueue_script でするべきであり、ハードコードしているテーマは他の部分でも信用度は低くせざるを得ません。
http://codex.wordpress.org/Function_Reference/wp_enqueue_script

■ jQueryを “no conflict” mode で使用していない。
WordPress添付のjQueryは “no conflict” mode で提供されています。
ほとんどのプラグイン、テーマはそれに従っています。
そんなことも知らないなら、他もどうなのと考えちゃいます。

3.custom-menuが使える
カスタムメニューはWordPRess 3 から追加された機能です。
グローバルナビやサイドメニュー、フッターナビなどを自在に作れるとても便利な便利な機能です。
この機能が使えないテーマは選択する意味がないように思えます。

4.$wpdbを使ったSQLが使われてたら△
テンプレートタグ、関数で対応していないことをデータベースを直接操作してしまおうとする高度なワザなのですが……..
将来のWordPressのアップグレードでDB構造が変わったりすると困ることがあります。
素早く対応してくれたら良いのですが・・・
いざとなったら自分でメンテナンスしますな覚悟は必要だと思います。