2011年06月14日 WordPress
ちょっとタイトルじゃ分かりづらい(少なくとも僕は。。)ですが、WordPressをカスタマイズしているとサイドメニューにカテゴリ一覧を出したり、ページ一覧を出したり、サブカテゴリや、サブページを出したり、、、、など色々することが多いと思います。
その際に、一覧を表示するコードなんかを適当に検索して、貼付けると、確かに動く! 動くんですが、その箇所はちゃんと動くけど、グローバル変数が書き換えられてしまって、他が動かなくなる。といったコードが結構あります。というか、ありました。プラグインなんかでもそういうのがあるかもしれません。 そうすると、WordPressに精通していない僕なんかは困るわけです (;゚∀゚) サイドメニューは動いてるのに、さっきまで動いていた箇所が動かなくなってるとか後で気付いたりするわけです (p_q、)シクシク そうなると、どこが原因か、どんどん分からなくなってしまいます。(少なくとも僕は。。)

解決方法

そういうのを防ぐ、もしくは、その状態を解決する方法として、function.php内に以下のコードを記述して、wp_head()の出力時に、$postを他の変数(今回は$_cur_page)として保持しておきます。 あとは、$postが書き換えられたーーって困った時なんかは、$_cur_pageを代わりに使うなり、もともと、$postを触らずに、$_cur_pageからデータを取得するなどして、$postが変更されない状態にしておくなど、対応が出来るようになるかと思います。

コード

//wp_head()実行時にget_pageid()を実行
add_action('wp_head', 'get_pageid');

//現在のページIDを記録しておく(他のウィジェットや関数に書き換えられても良いように)
function get_pageid()
{
	global $post,$_cur_page;
	$_cur_page = $post;
}

//現在のページの属する親ページのIDリストを取得
function get_page_parent_list()
{
	if( !is_page() ) return array();
	global $_cur_page;
	$curr_page = $_cur_page;
	$hierarchy[] = $curr_page->ID;
	while($curr_page->post_parent) {
		$curr_page = &get_post($curr_page->post_parent);
		$hierarchy[] = $curr_page->ID;
	}
	return $hierarchy;
}
参考サイト:http://soft.fpso.jp/develop/wordpress/customize/entry_2017.html

この投稿へのコメント

コメントはまだありません。

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます。
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

CAPTCHA


ピックアップ記事

WordPress 投稿画像のアップロード時にサイズを指定

2011年05月26日 WordPress
Resize At Upload を使うことで、アップロード時にサイズを指定することが可能になります。 具体的には、iPhoneなどからの画像をそのままアップすると最大サイズで投稿され、フルサイズの画像が大きすぎるという時などに便利です。 もともと、サムネイルは投稿に挿入する際にサイズ指定できますが、クリックされた後のフルサイズは、管理画面から画像をトリミングするなどしなければ、思いどおりのサ…
「WordPress 投稿画像のアップロード時にサイズを指定」をはてなブックマークに追加

WordPressの投稿日からの経過日数を調べる(2つの日付の差分)

2013年10月04日 WordPressphp
WordPressの投稿日からの経過日数を調べる(2つの日付の差分)
ブログの記事が古い場合に「この記事は古いから注意してね〜」みたいなお知らせが表示されるサイトをたまに見かけませんか? このサイトも賞味期限切れの記事がありそうな気配がムンムンしてきたので、半年以上前の記事は古くなってますよ〜って表示しようと思い、調べてみました。 実装したコード [php]<?php function day_diff($date1, $date2)…
「WordPressの投稿日からの経過日数を調べる(2つの日付の差分)」をはてなブックマークに追加

指定カテゴリに属する子カテゴリ名の一覧を取得(表示)

2011年11月28日 WordPress
以下の例では、カテゴリIDが30のカテゴリを親に持つ、子カテゴリ一覧を表示します。 [php] <?php $categories = get_terms( 'category', array( 'orderby' => 'count', 'hide_empty' => 0, 'child_of' => 30, ) ); foreach($cat…
「指定カテゴリに属する子カテゴリ名の一覧を取得(表示)」をはてなブックマークに追加

WordPressサイト全体に認証をかける

2011年11月30日 WordPress
プラグインダウンロード 以下のサイト内から「Angsuman’s Authenticated WordPress Plugin」をダウンロードします。 Angsuman’s Authenticated WordPress Plugin プラグイン編集 プラグインの内容が古くなっていて、最新のWordPressの認証に対応していないので、以下のように書き換えます。 ac_authenti…
「WordPressサイト全体に認証をかける」をはてなブックマークに追加

カテゴリIDからカテゴリ名またはスラッグを取得する

2012年01月24日 WordPress
<?php //カテゴリIDからカテゴリ情報取得 $category = get_category('123'); //カテゴリ名表示 echo $category->cat_name; //スラッグ名表示 echo $category->slug; ?> …
「カテゴリIDからカテゴリ名またはスラッグを取得する」をはてなブックマークに追加
© graffiti on the web . All rights reserved. WordPress Theme by comfy