2011-07-07 17 views
1

私はtwentyelevenに基づいて私の子供のテーマのサイドバーで新しいページテンプレートを作っています。twentevenvenにサイドバーを重複して固定

function twentyeleven_body_classes($classes) { 

if (! is_multi_author()) { 
    $classes[] = 'single-author'; 
} 

if (is_singular() && ! is_home() && ! is_page_template('showcase.php') && ! is_page_template('sidebar-page.php')) 
    $classes[] = 'singular'; 

return $classes; 
} 
add_filter('body_class', 'twentyeleven_body_classes'); 

それは、デフォルトのサイドバー-page.php以外の任意のテンプレートにbodyタグに「単数」クラスを追加し、この結果: それはtwentyelevenのfunction.phpに起因するこれに正しく表示されませんサイドバーのオーバーラップ。

私はfunctions.phpを使ってこの問題を解決することはできません。なぜなら、子テーマfunctions.phpは親テーマのものよりも先に読み込まれているからです($ classes配列を通過して単数要素を取り除くことはできません)。 親のfunctions.phpを編集したくないのですが、これは更新中に上書きされるため、最初は子テーマを使用する全体のポイントを奪います。

アイデア?

EDIT: これは、親のfunction.phpの後に、after_setup_themeアクションフックを使用して実行できるようです。

ここでエラーが発生します。

私のコードは次のとおりです。

add_action('after_setup_theme', 'childtheme_override'); 

function childtheme_override() { 
    add_filter('body_class', 'twentyeleven_child_body_classes'); 
} 

function twentyeleven_child_body_classes ($classes) { 
    if (is_page_template('container-sidebar-page.php')) { 
     foreach ($classes as $key => $value) { 
     if ($value == 'singular') { 
       unset($classes[$key]); 
       $classes = array_values($classes); 
      } 
    } 
    return $classes; 
} 
+0

信じられないほど、私はあまりにもこの最も通過しました。トレイルを燃やしてくれてありがとう。 –

答えて

-1

はそれを考え出した:remove_filterをやって、ちょうど親のbody_classesをコピーし、「単数」クラスを持つべきではないリストにテンプレートを追加することによって固定しました。次のように

エラーは以下のとおりです。

Warning: array_merge() [function.array-merge]: Argument #1 is not an array in C:\wamp\www\wp-content\themes\twentyeleven\inc\theme-options.php on line 40 


Warning: join() [function.join]: Invalid arguments passed in C:\wamp\www\wp-includes\post-template.php on line 390 
関連する問題