KnowAllテーマのサイドバーについて
こちらは、KnowAll を使っていて、ブログ機能をオンにして、サイドバーを使う人のための記事です。また、「ちょこっと開発」の力を付けていきたい方にぴったりの記事だと思います。
不具合について
KnowAllは、ブログ機能はデフォルトでオフです。おそらく、ブログ機能は「補助的」なため、しっかりとデバッグ、テストが行われていないと思われます。
その結果、2020/03/06 現在、ブログ機能でサイドバーを使うと、ウィジェットとコンテンツの間に余白がありません。
調査方法
まず、現象を確認します。きれいに表示されている固定ページや、ナレッジ記事と、余白がないブログ記事のソースコードを比較します。
すると、サイドバーとコンテンツを含む div に怪しい箇所を見つけました。ht-page--sidebaroff
を ht-page--sidebarright
に切り替えてみました(うまく表示しているものと比較)。するとうまくいきました。

次にこのソースコードを表示している場所を探します。Query Monitor でブログページ、ブログの個別ページをチェックしたら、それぞれ、 index.php と single.php でした。
それらのソースコードで、該当の部分をチェックしたところ、以下のように書かれていました。ここから、 ht_sidebarpostion_blog
とタイプミスのような関数があります。
<?php get_header(); ?> <!-- .ht-page --> <div> <div> <?php ht_get_sidebar_blog( 'left' ); ?> (続く)
この関数を探すと、 inc/template_functions.php
に、以下のように記述されていました。しかし、タイプミスが気になる・・・。
// Blog Sidebar Position function ht_sidebarpostion_blog() { $ht_blogsidebar = get_theme_mod( 'ht_setting__blogsidebar', 'off' ); // Check if there are any widgets in widget area before adding class if ( is_active_sidebar( 'sidebar-blog' ) ) : echo 'ht-page--sidebar' . esc_attr( $ht_blogsidebar ); else : echo 'ht-page--sidebaroff'; endif; }
ht_setting__blogsidebar
のデータを取り出した時、デフォルト値を off とするとなっていますところで、 ht_setting__blogsidebar
という設定を行う項目らしいものが、外観 > カスタマイズにはありません。ページはありますが・・・。
ということで、この値を right などにセットすれば解決するんじゃないか?と考えました。
解決方法
Code Snippet に以下のように記載し、Activateします。その後、一度サイトを開きます。ブログ一覧や、ブログの個別ページをチェックします。
set_theme_mod( 'ht_setting__blogsidebar', 'right' );
これで、正しく表示されていれば、このスニペットを「deactive」にします。
テーマの設定を、設定するための関数なので「一度だけ」実行すればOKです。逆に、毎回呼び出すと、サイトの動作が(若干)遅くなります。また、不要な操作をしているのは、気持ちが悪いですし。
以上で解決しました。
1番の解決は、KnowAll の ブログのサイドバー機能が有効になることでしょう。なお、上記の right のところは、 null とすれば、サイドバーなしのデザインになります。left とすれば、左側に表示されます。