新しいバージョンがリリースされると、ダッシュボードに「WordPress *.* が利用可能です ! アップデートしてください。」というメッセージが表示される。
v2.8がリリースされた際には、自動アップデートに不具合があるとの情報があらかじめ出回っていたため、ファイルを手動でFTPでアップせざるを得なかった。今回2.8.4にアップデートする際に初めて、自動アップデートを行った。
「WordPress 2.8.4 が利用可能です ! アップデートしてください。」のリンクをクリックすると、ウィザード形式で作業が始まり、FTP情報をきかれたところで、アカウントとパスワードを入力する。あとは自動的にファイルが更新され、アップデートが完了する。次回、ログインのタイミングでデータベースのアップデートが行われる。
なんと手軽!

今回はマイナーバージョンアップのため、見た目には違いがわからない。

検索結果をソートするには、通常query_posts()で”orderby”を指定する。
ただし指定できる項目は、投稿テーブル(wp-posts)のフィールドに限られる。
他の項目(カスタムフィールドや、カテゴリ順など)でソートした場合には、
フィルターフックでSQLに手を加えるとよい。

たとえばカテゴリのid順にソートした場合は、

add_filter('posts_join',    'my_join');
add_filter('posts_orderby', 'my_orderby');

function my_join($query){

	global $wpdb;

    if(is_search()){
		$query .= " JOIN $wpdb->term_relationships AS tr ON tr.object_id=$wpdb->posts.ID JOIN $wpdb->term_taxonomy AS tt ON tt.term_taxonomy_id=tr.term_taxonomy_id JOIN $wpdb->terms AS t ON t.term_id=tt.term_id";
    }

    return $query;
}

function my_orderby($query) {

	global $wpdb;

    if(is_search()){
		$query = " t.term_id DESC, $wpdb->posts.post_date DESC";
    }

    return $query;
}

独自に作成したテーブルを追加することも可能だ。ただしやりすぎと負荷がかかるので、様子を見ながら対応すること。

ダッシュボードの投稿画面に項目を追加するには、カスタムフィールドを利用するのが一般的だ。
独自の項目がある程度まとまっている場合には、add_meta_box()で入力セクションを追加したほうが、使い勝手がぐっとよくなるだろう。手順としては、ダッシュボードがロードされたタイミングでadmin_menu()をフックし、add_meta_box()を実行することで実装できる。

add_action('plugins_loaded', 'my_init');

function my_init() {

	if(is_admin()) {
		add_action( 'admin_menu', 'my_dashboard', 1);
	}
}

function my_dashboard() {
	add_meta_box('my_metabox', __('今日のお天気情報', 'my_metabox'), 'my_section', 'post');

}

function my_section() {

	$my_weather = '(初期値を設定またはDBから取得)';
	$my_high = '(初期値を設定またはDBから取得)';
	$my_low = '(初期値を設定またはDBから取得)';

	?>
		天気:<input type=text name="my_weather" id="my_weather" value='<?php echo $my_weather; ?>' />
		最高気温:<input type=text name="my_high" id="my_high" value='<?php echo $my_high; ?>' />
		最低気温:<input type=text name="my_low" id="my_low" value='<?php echo $my_low; ?>' />
	<?php
}

入力項目を保存するには、”save_post”、”publish_post”などのアクションフックを利用し、DBのテーブル[wp_postmeta]にinsertする。

他のアプリケーションからの投稿であるプロトコルXML-RPCを利用するには、管理画面の[設定]-[投稿設定]でリモート投稿のXML-RPCにチェックを付けておく必要がある。
実際に投稿するにはPEARのXML_RPCや、IXR_Libraryを利用するよとよい。記事のタイトル、内容などのほかカテゴリやカスタムフィールドを設定することもできる。メディアも投稿できるものの、既存記事への添付がうまくいかなくて困ってる

記事に投稿されている画像を取得するには、添付ファイルを取得するget_children()でimageを指定する。画像のURLのほか、タイトルやサイズなどのメタ情報も取得することもできる。

$attachments = get_children(array('post_parent' => $id, 'post_type' => 'attachment', 'post_mime_type' => 'image'));
if (is_array($attachments) ){
	foreach($attachments as $attachment){
		$image = wp_get_attachment_url(intval($attachment->ID));
		echo '<img src="' .$image .'" alt="' .$post->post_title .'" />';
	}
}

記事の本文に<!–more–>!を挿入すると、the_contentで記事の途中までが表示され、”もっと読む”がつけ加えられる。シングルページでは無効になる。

テーマやプラグインでJavaScriptを読み込む場合は、アクションフックのwp_print_scriptsを使用する。

function add_myscript() {
	wp_enqueue_script('myscript', ’JavaScriptのフルパス’);
}

add_action('wp_print_scripts', 'add_myscript');

jQueryに依存したJavaScriptを読む込む場合は以下のようになる。wp_enqueue_script(’jquery’);を行うことで、jQueryが2重に読み込まれることがなくなる。

function add_myscript() {
	wp_enqueue_script('jquery');
	wp_enqueue_script('myscript', ’JavaScriptのフルパス’, array('jquery'));
}

add_action('wp_print_scripts', 'add_myscript');

テーマではデフォルトでstyle.cssを使用するようになっている。
プラグインでも外部CSSファイルを使うことが可能だ。

プラグインで外部CSSファイルを指定するにはwp_register_style()で登録し、wp_enqueue_style()で読み込ませる。たとえば自分で用意したcssファイルを使いたい場合は、アクションフックのplugins_loadedで以下のように記述する。wp-headではなくて、plugins_loadedというのに気がつくのに時間を要した。

function regist_my_css(){
	wp_register_style('my_css', '(CSSのフルパス1)', array(), '', 'screen' );
	wp_register_style('my_css', '(CSSのフルパス2)', array(), '', 'screen' );
	wp_enqueue_style ('my_css');
}

add_action('plugins_loaded', 'regist_my_css');

英語で表示されるプラグインでも、翻訳機能を使って日本語で表示することができる。

外国語に対応しているプラグインであれば、potという拡張子のファイルが用意されいてる。
例えば、example.pot
Poeidtというアプリケーション(Windows用)を使って、example.potを翻訳する。
[ファイル]-[POTファイルをもとに新しいカタログを作成する]メニューでpotファイルを読み込む
必要箇所を翻訳し、名前を付けて保存する。
日本語化する場合、このときのファイル名はexample-ja.poにすること。
保存と同時にexample-ja.moが作成される

プラグインで指定してあるディレクトリにmoファイルをコピーする
load_plugin_textdomain(’example’, PLUGINDIR . ‘/example/languages’);

プラグイン中で翻訳される箇所は、__(や_eの箇所となる。

コメント表示をカスタマイズするには、コメントの配列$commentを回して表示する。
$commentはテーマのcomments.phpからのみ参照できる変数となっている。

foreach ($comments as $comment) {
    custom_comments($comment, null, null);
}

WordPress 2.7よりコールバックを指定することができる。

wp_list_comments('type=comment&amp;callback=custom_comments');

関数custom_comments()はfunctions.phpに作成しておく。

function toriko_custom_comments($comment, $args) {

	$GLOBALS['comment'] = $comment;

?>

	<div class="post">
		<ul>
			<li class="home"><?php comment_author(); ?> さん</li>
			<li><? printf( __('%1$s %2$s', 'kubrick'), get_comment_time(__('F jS, Y', 'kubrick')), get_comment_time(__('H:i', 'inove')) ); ?></li>
		</ul>
		<?php comment_text(); ?>
	</div>
<?php
}

Recently Written

Categories

About

WordPressって何?から始まった悪戦苦闘の自分メモを公開...»もっと読む

Feedを購読

Search

Archives

My Blogs