lightningに移行 サイドバー操作。
自分用メモなんで読む価値ないと思うけれど…
最初はlightningだったんだけどトップページがうまく編集できずに自作(Udemy講座で配布されたものの改変)したという経緯があり。
とはいえ記事のページなどのデザイン性は明らかにLightningの方が優れており、そっちに戻そうと。今まで培った知識も作ったファイルも一部は流用できるし。一部以外は無駄になるけど。
とりあえずトップページだけは元のテーマを活かしておきたい。
→top.phpを作成し、固定ページのカスタムテンプレートでトップページにする。「トップ画面用テンプレート」みたいな名前を付ける。
<?php
/*
Template Name: トップ画面用テンプレート
*/
?>
既にlightningのテーマ内にあるfront-page.phpがあると、カスタムテンプレートがうまく作動しなかったため削除した。優先順位がよくわからないし、そもそも削除してよかったのだろうか?
自作テーマのheader.php、sidebar.phpをheader-top.php、sidebar-top.phpとしてlightningのテーマフォルダの中に保存し、top.phpから読み込ませる。
footer.phpは時にこだわりないんでlightningをそのまま使う。
TOPページとその他のページでデザインがガラッと変わるようになってしまったので、まぁおいおい調整していこう…
TOPページだとウィジットでサイドバーをうまく調整できなくなったので原因を探る。ほかのページ(lightningのデフォのページ)だと操作できるので、そちらのPHPファイルに比べて足りないものがあるのだろう。
sidebar-top.phpには<?php dynamic_sidebar('my-sidebar'); ?> という記述があり、そこからウィジェットを反映させていた。
関数リファレンス/dynamic sidebar
Lightningのsidebar.phpの記述は以下だ
<?php
if ( is_active_sidebar( 'common-side-top-widget-area' ) ) {
dynamic_sidebar( 'common-side-top-widget-area' );
}
if ( is_front_page() ) {
if ( is_active_sidebar( 'front-side-top-widget-area' ) ) {
dynamic_sidebar( 'front-side-top-widget-area' );
}
} else {
// Display post type widget area
$postType = lightning_get_post_type();
$widdget_area_name = $postType['slug'] . '-side-widget-area';
if ( is_active_sidebar( $widdget_area_name ) ) {
dynamic_sidebar( $widdget_area_name );
}
}
if ( is_active_sidebar( 'common-side-bottom-widget-area' ) ) {
dynamic_sidebar( 'common-side-bottom-widget-area' );
}
サイドバーだけでも複数の種類のウィジェットエリアを指定できるようにしているようだ。
sidebar-top.phpをこれに置き換えて、ダッシュボードから変更をためす。
Lightningのsidebar.phpは、元のfront-page.phpで以下のように呼び出されている。
<?php if ( lightning_is_subsection_display() ) : ?>
<div class="<?php lightning_the_class_name( 'sideSection' ); ?>">
<?php get_sidebar(); ?>
</div><!-- [ /.subSection ] -->
<?php endif; ?>
これをtop.phpに書き加え、get_sidebar()にtopと書き加え…
これでサイドバーが反映されるようになった。元ファイルとのHTML/CSS上の配置の矛盾ができてズレちゃいましたけど…
元のテーマだとサイドバーのwidthを全体の20%とかにしてたからはみ出さず並んでいたけど、ここでCSS弄るとまたややこしくなりそう…
なかなかスマートにいかないっすね。
ここまで書いて気付いたけど、たぶん原因はfanction.phpにmy-sidebarというサイドバーを反映させる記述を書かなかったことだと思われる。
//ウィジェットエリアの追加
register_sidebar( array(
'name'=>'サードバーウィジット-1',
'id'=>'my-sidebar',
'description'=>'サイドバーのウィジットエリア',
'before_widget'=>'<li>',
'after=widget'=>'<li>',
));
元使ってたfanction.phpにはこちらの記載があったからダッシュボードでサイドバーを操作できたんだな。そういえばそうだった。一度学んだ内容のはずが、なかなかぱっと思いつかないなぁ。
ということでmy-sidebarの方を活かす方法で行きます→行きました。上手くいきました。良かったですね。(この記事なんだったんだ…)
ということで活字化することで記憶をしていく狙いです。コレに言い値がつくシステムがよくわかんねーですがnoteのことを僕はただただ自分用の便所の落書きを気まぐれでWWWに放出しているというスタンスでこれからも行きます。
この記事が気に入ったらサポートをしてみませんか?