子テーマでfunctions.phpの関数を上書きする方法と、TwentyTwelveのフッター部分にメニューを付ける為のメモ。
TwentyTwelveのフッター部分にメニューを付けたいなぁと思い、googleさんに聞いて見つけたのがこちら。
【WordPress】「Twenty Twelve」のフッター部分にウィジェットエリアを追加する方法 / 1000old.com
うんうん。これでできそう。

フッターにこんな感じのを付けたい
と思ったんやけど、説明では関数「function twentytwelve_widgets_init()」に以下のコードを追加となっている。
カスタマイズしまくって原型とどめてないオリジナルテーマを作るのであれば、それでもかまへんけど、以前それで酷い目にあったので、今はTwenty Twelveの子テーマを作ってそれをいじっている。と言うことで、親テーマのfunctions.phpにコレを書くとテーマ更新時に消えるし、子テーマにそのまま書くとエラーになって真っ白(500 Server error)になる。functions.phpに入ってる関数を子テーマで上書きするにはどうすりゃええんやろ….。
調べてみると、どうやらいくつかの方法があるみたいやったが、↓が分かりやすかったので、これにしてみた。
WordPress子テーマを作成し任意のphpをカスタマイズする方法 / Ceatant Official Blog
「親テーマの関数を無効化(remove)」し、「子テーマの関数を有効化(add)する」とのこと。
と言うことで、親テーマ(オリジナル)のfunctions.phpはそのまま置いといて、子テーマのfunctions.php(内容は上記ブログのまま)を下記のように。
/**
* フッターにウィジェットエリアを作る
*/
// 親テーマの関数をremoveする関数
function remove_twentytwelve_widgets_init() {
remove_action('widgets_init', 'twentytwelve_widgets_init');
}
// 上記の関数をWordPressのinitに登録
add_action('init','remove_twentytwelve_widgets_init');
// ウィジェット作る
function twentytwelve_widgets_init_child() {
register_sidebar( array(
'name' => __( 'Main Sidebar', 'twentytwelve' ),
'id' => 'sidebar-1',
'description' => __( 'Appears on posts and pages except the optional Front Page template, which has its own widgets', 'twentytwelve' ),
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => '</aside>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
) );
register_sidebar( array(
'name' => __( 'First Front Page Widget Area', 'twentytwelve' ),
'id' => 'sidebar-2',
'description' => __( 'Appears when using the optional Front Page template with a page set as Static Front Page', 'twentytwelve' ),
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => '</aside>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
) );
register_sidebar( array(
'name' => __( 'Second Front Page Widget Area', 'twentytwelve' ),
'id' => 'sidebar-3',
'description' => __( 'Appears when using the optional Front Page template with a page set as Static Front Page', 'twentytwelve' ),
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => '</aside>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
) );
register_sidebar( array(
'name' => __( 'Footer Widget Area 1', 'twentytwelve' ),
'id' => 'footer-widget-1',
'description' => __( 'Widget area is displayed on a footer portion', 'twentytwelve' ),
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => '</aside>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
) );
register_sidebar( array(
'name' => __( 'Footer Widget Area 2', 'twentytwelve' ),
'id' => 'footer-widget-2',
'description' => __( 'Widget area is displayed on a footer portion', 'twentytwelve' ),
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => '</aside>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
) );
register_sidebar( array(
'name' => __( 'Footer Widget Area 3', 'twentytwelve' ),
'id' => 'footer-widget-3',
'description' => __( 'Widget area is displayed on a footer portion', 'twentytwelve' ),
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => '</aside>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
) );
register_sidebar( array(
'name' => __( 'Footer Widget Area 4', 'twentytwelve' ),
'id' => 'footer-widget-4',
'description' => __( 'Widget area is displayed on a footer portion', 'twentytwelve' ),
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => '</aside>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
) );
}
// カスタマイズした関数を有効化する
add_action('widgets_init','twentytwelve_widgets_init_child');
// フッターウィジェット
function twentytwelve_footer_widget_class() {
$count = 0;
if ( is_active_sidebar( 'footer-widget-1' ) )
$count++;
if ( is_active_sidebar( 'footer-widget-2' ) )
$count++;
if ( is_active_sidebar( 'footer-widget-3' ) )
$count++;
if ( is_active_sidebar( 'footer-widget-4' ) )
$count++;
$class = '';
switch ( $count ) {
case '1':
$class = 'one';
break;
case '2':
$class = 'two';
break;
case '3':
$class = 'three';
break;
case '4':
$class = 'four';
break;
}
if ( $class )
echo $class;
}
他の設定(sidebar-footer.php、CSS、footer.php)は、上記の1000oldさんのブログに書いて有るとおりにして、ウィジェットエリアが出来て、めでたしめでたし。
これならテーマの更新も怖くない。

テーマのウィジェットから編集








コメント
[…] https://www.moyashi-koubou.com/blog/wordpress_twentytwelve_footer_widget/ http://1000old.com/OSS/twenty-twelve-3columns/ http://wpcos.com/?p=7747 […]
[…] もやし工房様 WordPress Twenty Twelveの「子テーマ」でフッター部分にウィジェットエリアを追加する方法 https://www.moyashi-koubou.com/blog/wordpress_twentytwelve_footer_widget/ […]