functions.phpは起動時に読み込まれる。
その時点ではまだ query コンテンツが読み込まれてないので、ページに関する情報は持っていない。
だから is_home() や is_page() は必ず false を返してしまう。
これを解決するためには、is_home() や is_page() を function の中に入れ込んで、フック内で使用する。
例1.)
// feed url を変更
add_action('get_header', 'my_mod_feed');
function my_mod_feed() {
if(is_front_page()) {
remove_action( 'wp_head', 'feed_links_extra', 3 ); // エクストラフィードの削除
}else{
add_action( 'wp_head', 'feed_links_extra', 3 ); // エクストラフィードの追加
}
echo '<link rel="alternate" type="application/rss+xml" title="RSS" href="'.get_bloginfo('rss2_url').'" >';
}
例2.)
add_action( 'wp', '_check_home' );
function _check_home() {
if ( is_home() )
add_action( 'wp_enqueue_scripts', 'my_scripts' );
}
function my_scripts() {
wp_register_script
('homepage', get_template_directory_uri
() . '/js/homepage.js', array('jquery')); wp_enqueue_script('homepage');
}
最終更新:2012年10月30日 19:52