カスタム投稿タイプの年別アーカイブ表示

function add_custom_rewrite_rules() {
	$rules = array(
		'top' => array(
			'^event/([0-9]{4})/page/([0-9]+)/?' => 'index.php?post_type=event&year=$matches[1]&paged=$matches[2]',
			'^event/([0-9]{4})/?' => 'index.php?post_type=event&year=$matches[1]',
		),
		'bottom' => array(
		)
	);
	foreach ( $rules as $position => $position_rules ) {
		foreach ( $position_rules as $rule => $rewrite ) {
			add_rewrite_rule($rule, $rewrite, $position );
		}
	}
}
add_action( 'init', 'add_custom_rewrite_rules' );

function get_post_type_archives_where( $where, $r ) {
	global $my_archives_post_type;
	if ( isset( $r['post_type'] ) ) {
		$my_archives_post_type = $r['post_type'];
		$where = str_replace( '\'post\'', '\'' . $r['post_type'] . '\'', $where );
	} else {
		$my_archives_post_type = false;
	}
	return $where;
}
add_filter( 'getarchives_where', 'get_post_type_archives_where', 10, 2 );


function get_post_type_archives_link( $link_html ) {
	global $my_archives_post_type;
	if ( $my_archives_post_type ) {
		$link_html = preg_replace( "#(/[0-9]{4})#", '/' . $my_archives_post_type . '$1', $link_html);
		$link_html = preg_replace( "#>([0-9]{4})</a>#", '>$1年</a>', $link_html);
	}
	return $link_html;
}
add_filter( 'get_archives_link', 'get_post_type_archives_link' );

【WordCamp Osakaリレーブログ企画】WordCamp Tokyo からの非公式挑戦状

こんにちわぷー!!
WordPress界のキアヌ・リーb…もとい、黄色いおじさんことまがりんです。
あれ?なんか、ちょっと前にも同じような事書いた気が?

WordCamp Osaka のリレーブログになぜ東京のお前が?と思われた方もいらっしゃるかもしれません。実は、ここで公式サイトでも公開されていない情報を大暴露!(ジャジャーン!!)なんと、私、1セッションを担当させていただくことになりました。(一応、告知OKの承諾は得ています。)タイトルは・・・おっと、それはタイムテーブルをお楽しみに。どうやら、今週中には公開予定らしいですよ。私の他にも、えっこの人が!?という方から、はたまたまたお前かいっwって毎度おなじみの方まで、全部見たくなるようなセッションが勢揃いしています。いやー、楽しみですな―。

ここまで言ってなにもナシなのも何なので、サブタイトルだけちょろっと公開すると、「コピペプログラマーからの脱出」です。今、これを見てドキッとした方は、是非どうぞw

さてさて、ちょい漏れ情報はこれくらいにして、リレーブログの最初を飾ったりえさんが

WordCampに初参加したのは2011年2月のWordCamp福岡。その後Camp神戸の実行委員をして、無事大成功に終わり、その時すぐ思ったのが「大阪でもWordCampを開催したい、もっと大阪でWordPressのことを知ってほしい」

と、おっしゃられています。

大阪以外にも名古屋での WordBeach や鹿児島での WordVolcano などにも象徴されるように、WordCamp やそれに準ずるイベントの開催が、地域を越えて WordPress ユーザーを引き寄せ、その熱気が別の地域への火種となり、さらに、WordBench 神戸や WordBench 大阪再始動など、その地域での WordPress 活性化につながっていっていると実感しています。

これは、非常に重要なことで、今回の WordCamp Osaka 2012 も、きっと次のどこかでの WordCamp 開催の起爆剤になったり、他の地域での勉強会につながったりしていくのでしょう。そんな面からも、今回の大阪開催には、期待し、応援しています。

ここで、先日行われた WordCamp Tokyo 2012 からの挑戦状!w
WordCamp Tokyo 2012 では、「WordPress の文化祭」をキャッチコピーに、ブース企画などを行い、展示者と参加者の交流という、一定の成果を得られたと自負しています。大阪では、どうやらお祭りがコンセプトらしいので、これをどう実現し具現化してくれるのか、良い意味で WordCamp Tokyo のスタッフからも、「あいつらやってくれたぜ」と言わせるようなコンテンツを生み出せるのか、WordCamp Tokyo のスタッフとして、一参加者として、楽しみにしています。

P.S. りえさんは、ブログのバナーを更新した方がいいと思うんだ。

link rel=’prev’ および link rel=’next’ を投稿だけで表示する

これでどや

function remove_adjacent_posts_rel_link_wp_head() {
	if ( ! is_single() ) {
		remove_filter( 'wp_head', 'adjacent_posts_rel_link_wp_head' );
	}
}
add_action( 'wp_head', 'remove_adjacent_posts_rel_link_wp_head', 0 );

【WordCamp Tokyoリレーブログ企画】涙無しには読めないスタッフブログ!?

こんにちわぷー!!
WordPress界のキアヌ・リーb…もとい、黄色いおじさんことまがりんです。

本日は、ナイスタイミング北村氏による「【WordCamp Tokyoリレーブログ企画】すすめ!WordCamp TOKYO 2012!」からの無茶ブリを受けて、涙々の感動巨編をお送りしたいと思います。
そう!思うだけなら自由なんです。基本的人権万歳。

思えば、WordCamp Tokyo 2012 の企画が正式にスタートしたのは、今年の7月5日に、渋谷のJELLY JELLY CAFE で行われたキックオフミーティングが最初でした。一応、その前からも中心メンバー数名では企画が進んでいたものの、参加意思のあるメンバーが集い、認識を共にしたのはこのときからでした。

今振り返ってみると、ほぼ二ヶ月前。それから、およそ1ヶ月後の8月2日には、公式サイトがオープンとなり、8月10日には、参加登録が開始されました。また、これらと同時進行で、スポンサー募集、スピーカー公募、ブース出展募集、会場内のレイアウト策定、現地取材など様々なタスクも、昼は本職、夜は WordCamp の準備の掛け持ちをしながら突貫工事でやってきました。

寝る間も惜しんでミーティングを敢行するスタッフたち?

あまりに突貫すぎたためと、今回初となる実施内容も多いため、多方面から「対応遅い」などのお叱りの言葉をいただいたりと言うこともありましたが、現状、ドタバタしつつも、あと一息というところまで来られたということに、1スタッフとして一定の感慨を憶え、開催を楽しみにしている部分があります。

過酷な労働にも耐えうる当日用作業スーツも準備万端

それもこれも、なんだかんだ言いながら個々のメンバーが互いのタスクを尊重し、楽しみつつやっているからこそ実現できているのではないかなあと、個人的には思っています。

そんなスタッフの思いが詰まった WordCamp Tokyo 2012 も、あと1週間ちょっとでの開催となります。
単にセッションを見たり・聞いたりするだけでなく、用意されている個々のものに、スタッフがどのような思いで作成したのか、そんな点にもちょっとだけ、意識を振り向けてくれるとより、楽しめるイベントになるのではないかなあと思います。

スタッフとしても、あともう一踏ん張り!
残されたタスクをモーレツにこなして、来場された方には、少しでも楽しんでもらえたらと思っています。そして、そんなスタッフがちょっとでも面白そうと思われた方は、是非次回の WordCamp をはじめとしたイベントのスタッフとして応募してみてください。ポイントは、タスクが回ってくるのを待つのではなく、自分から○○をやりたいと志願することです。

フェイスブックグループ上で展開される真剣なやりとり
注)他のスレッドはもっとまじめにやってます。本当です。信じt

それでは、会場でお会いできることを楽しみにしています。

あ、まだ参加登録してないそこのあなた!こちらからどうぞ
↓ ↓ ↓ ↓ ↓ ↓ ↓

次回は一転、WordCamp Tokyo 実行委員会の ジークフリード・キルヒアイス こと、物部さんがお送りする知的で高貴な物語をどうぞ。

パーマリンクの %category% の出力条件を変更してみる

パーマリンク設定に %category% が含まれていた場合、カテゴリーのIDが若いものを元にして表示するURLが構成されるのはご存じでしょうか。
まあ、知らなかった方は、そうなっているので、「なるほどですねー。」と一言、頭に刻み込んでおいてください。

ただし、カテゴリーに 拙作 PS Taxonomy ExpanderMy Category Order などを使っていたりすると、この指定した順列に従って欲しいということもあるのではないでしょうか。

そんなときは、CODE 1 で一発解消!!

といきたいところですが、大きな問題点がっ。

両プラグインとも、同一階層内での順列情報のみしか持っていないため、階層が異なったり、異なる親カテゴリーだと自由な設定ができません。
そんな場合は、_usort_terms_by_order 関数内の term_order をスラッグ(slug)や説明(description)に変更すれば、他の要素での並び替えも出来るかと思いますので、自由にカスタマイズしてみてください。

CODE 1

function category_permalink_orderby_order( $permalink, $post, $leavename ) {
	if ( strpos( $permalink, '%ordered_category%' ) !== false ) {
		$cats = get_the_category( $post->ID );
		if ( $cats ) {
			usort($cats, '_usort_terms_by_order');
			$category = $cats[0]->slug;
			if ( $parent = $cats[0]->parent )
				$category = get_category_parents($parent, false, '/', true) . $category;
		}

		if ( empty($category) ) {
			$default_category = get_category( get_option( 'default_category' ) );
			$category = is_wp_error( $default_category ) ? '' : $default_category->slug;
		}
		$permalink = str_replace( '%ordered_category%', $category, $permalink );
	}
	return $permalink;
}
add_filter( 'post_link', 'category_permalink_orderby_order', 10, 3 );


function category_order_permalink( $permalink ) {
	$permalink = str_replace( '%category%', '%ordered_category%', $permalink );
	return $permalink;
}
add_filter( 'pre_post_link', 'category_order_permalink' );


function _usort_terms_by_order( $a, $b ) {
	if ( $a->term_order > $b->term_order )
		return 1;
	elseif ( $a->term_order < $b->term_order )
		return -1;
	else
		return 0;
}