Wordpress > functions.php内でis_home()を使うには

functions.phpは起動時に読み込まれる。

その時点ではまだ query コンテンツが読み込まれてないので、ページに関する情報は持っていない。

だから is_home() や is_page() は必ず false を返してしまう。


これを解決するためには、is_home() や is_page() を function の中に入れ込んで、フック内で使用する。

例1.)
  1. // feed url を変更
  2. add_action('get_header', 'my_mod_feed');
  3. function my_mod_feed() {
  4. if(is_front_page()) {
  5. remove_action( 'wp_head', 'feed_links_extra', 3 ); // エクストラフィードの削除
  6. }else{
  7. add_action( 'wp_head', 'feed_links_extra', 3 ); // エクストラフィードの追加
  8. }
  9. echo '<link rel="alternate" type="application/rss+xml" title="RSS" href="'.get_bloginfo('rss2_url').'" >';
  10. }
  11.  

例2.)
  1. add_action( 'wp', '_check_home' );
  2. function _check_home() {
  3. if ( is_home() )
  4. add_action( 'wp_enqueue_scripts', 'my_scripts' );
  5. }
  6. function my_scripts() {
  7. wp_register_script('homepage', get_template_directory_uri() . '/js/homepage.js', array('jquery'));
  8. wp_enqueue_script('homepage');
  9. }
  10.  





最終更新:2012年10月30日 19:52