フォーラムへの返信
-
投稿者投稿
-
反映されないのはどの部分でしょうか?
一応、WordPress の標準的な記事一覧ページ(ブログトップページやカテゴリーページ)については、先頭固定表示が反映されるようにしていて、ウィジェットやブロックにおいては反映されないようにしています。
※書き込みいただいて、トップページでの使用が主であろう「Snow Monkey: 最近の投稿」ウィジェットや、「最近の投稿」ブロックにおいては先頭固定表示が反映されるようにしたほうが良いのかな…と思いました!
♥ 0Who liked: No userbbPress Support は、デフォルトでは moderate 権限のないユーザーはダッシュボードにアクセスさせないようになっています。
snow_monkey_bbpress_support_prevent_admin_access
というフックがあり、false
を返すことでこのリダイレクトを無効化できます。Snow Monkey公式サイトのように、メディアだけを使うなどの特定の権限に対して使用可能にするなどは、どのようにすれば良いでしょうか?
Snow Monkey 公式サイトは WooCommerce との絡みもあるのでごちゃごちゃやってたかもしれませんが、この辺はコードを書かずにプラグインでやっています。 User Role Editor というプラグインを使っています。
♥ 0Who liked: No userカスタムページテンプレート機能については、ページテンプレート側にコメントを追加することで使えるようになる仕組みになっています。
なので、子テーマに
snow-monkey/page-templates/right-sidebar.php
をコピーして書き換え、みたいな感じです。♥ 0Who liked: No userカスタマイザー > 追加 CSS に下記のコードを追加してみるとどうでしょうか?
.p-footer-sticky-nav { background-color: #f00; /* 背景色 */ } .p-footer-sticky-nav a { color: #fff; /* 文字色 */ }
♥ 0Who liked: No userコアの
$wp_customize->add_setting()
のtype
と同じになります。option
を指定すると、theme_mod
(そのテーマのオプション) ではなく、option
(WordPress 自体のオプション) として値が保存されるようになります。つまり、前者は
get_theme_mod()
、後者はget_option()
で値を取得することになります。♥ 0Who liked: No user「レイアウトやビューを変更」が何を指すのかにもよりますが、子テーマでの上書きように、プラグインでの上書きはできるかもしれません。
ちょっと立て込んでいまして実際に試せてはいないのですが、
Helper::get_template_part( 'templates/layout/wrapper/one-column-full' );
のようにユーザーが直接
Helper::get_template_part()
で呼び出すことを想定していないだけで、内部的にはレイアウトファイルもビューファイルもHelper::get_template_part()
で呼び出されるので、snow_monkey_template_part_root
フックでルートをプラグインに変更すれば、プラグイン内でも「上書き」はできるのじゃないかなぁと。試せてはいないので動かなかったらすみません…。差し替えについては
snow_monkey_layout
、snow_monkey_view
フックでできます(ただしこれも子テーマ内での差し替えを想定しているので、プラグインで差し替えたければsnow_monkey_template_part_root
でルートを変更する必要があります)。♥ 0Who liked: No userぐわーほんとですね。正確にどの段階かはわかりませんが、リンク要素に自動的に
rel="noopener noreferrer
が追加されるために保存されてる HTML と違う!ということで壊れてしまうみたいです。この変更が影響しているような気がしますが、どう対処したら良いのかまだわからないので、調査してみますね。
♥ 0Who liked: No user解析タグとか、body の最初に入れてくださいというものがちょいちょいあるので、そのためのフックとして入れています。
アクションフックは入れやすいので、もしコンテンツ入れる用にこの辺にアクションフックがあったほうが良いとかがあれば言ってください!
♥ 0Who liked: No user明確に提示しているわけではないのですが、一応 Snow Monkye の各テンプレートファイルは
- レイアウトファイル (templates/layout)
- ビューファイル (templates/view)
- それ以外のテンプレート (いわゆるテンプレートパーツ、基本的には template-parts の中)
と分類されています。そして、
Helper::get_template_part
やget_template_part()
で呼び出すのはテンプレートパーツを想定しています。なのでレイアウトファイルやビューファイルをそれらの関数で呼び出したときにエラーになるのはあえて特に対策をしていません。ご提案のとおり、なんとかやればなんとかなるのかもしれませんが、それで複雑になるとメンテも難しくなっていくので、そうなっているほうがなんとなく便利くらいであれば、現状のままのほうが良いかと思います。
♥ 0Who liked: No userぐわーそうか、そういうパターンもありますね。。修正します。
♥ 0Who liked: No userいずれのウィジェットにも記事の表示条件を変更できるフックがあります。下記のトピックを参照してください。
「WPAW:最近の投稿」については、デフォルトで表示する投稿タイプを選択できるようになっています。「WPAW:最近の投稿」の設定パネルの「投稿タイプ」のところを適当に切り替えてみてください。
カスタムフィールドの内容を表示することは可能でしょうか。
これはちょっと大変かも…です。一応できないことはなくて、「WPAW:最近の投稿」の場合は
snow-monkey/vendor/inc2734/wp-awesome-widgets/src/widget/recent-posts/_widget.php
を、子テーマ/templates/widget/recent-post.php
にコピペすると、recent-post.php
ファイルが表示時に使われるようになるので、そのrecent-post.php
をカスタマイズしてカスタムフィールドの内容が表示されるようにすれば良いです。「Snow Monkey:最近の投稿」の場合は
snow-monkey/app/widget/snow-monkey-recent-posts/_widget.php
を、子テーマ/templates/widget/snow-monkey-recent-posts.php
にコピペです。♥ 0Who liked: No userこちらの環境にコピペして試してみたところ、
display: flex
もcolor: #ccc
も反映されていました。つくりによっては詳細度の問題がでるのかもしれないので、.wpaw-showcase .wpaw-showcase__lead{display: flex;} .wpaw-showcase .left{color: #ccc;} .wpaw-showcase .right{color: #000;}
みたいな感じで詳細度を上げてみるとどうでしょうか?あと、ブラウザのデベロッパーツールで CSS が適用されているか、また、追加 CSS に書いた CSS がそのページの head の中にちゃんと出力されているか確認してみてください。
♥ 0Who liked: No userあ、なんというか、そういうことをしないといけないシチュエーションが思い浮かばない…という感じでして。単純に中でテンプレートを呼びだしたいだけだとしたら、
add_filter( 'snow_monkey_get_template_part_template-parts/common/infobar', function( $name, $vars ) { ob_start(); \get_template_part( 'template-parts/common/infobar' ); $html = ob_get_clean(); echo $html; }, 10, 2 );
のように、コアの
get_template_part()
を使うのはどうでしょう?♥ 0Who liked: No userプラグインを幾つも作った際に、
snow_monkey_template_part_root
のフックを掛けちゃうと、Rootの取り合いになっちゃう為に上手く動作しなくなっちゃうから、配布するとか拡張目当ての共通プラグインでは使わないようにする等の注意は必要かなと思ったりしています。ぐわーそうか、もともと「子テーマの代替」で考えていたので、ちょっとそこ配慮が不足していました。単一のルートを返すのではなく、配列にして、そのルートにあれば使う、なければ次のルートを使う、みたいなフックのほうが良さそうですね。いまさら
snow_monkey_template_part_root
を変更するとちょっと影響が大きそうなので、別なフックを追加する等で良い感じにできないか試行錯誤してみます。slug などで分岐はできるのですが、同じテンプレートの場合は、優先度が高い低い関係なく最後に設定された return の値に合わせられてしまいますよね?
ですね。フックは一般的には優先度が高いものほど後で実行されるだったかなと思います。
また、
Helper::get_template_part
でフックしている template_parts を呼び出すと、その呼び出したテンプレートが同 filter をフックをしている場合は、無限ループに陥るので、それもremove_filter
で消したりする必要があるようなのですが、remove_filter
って無名関数とか使えない(?)ので、ちょっとそこだけ別 function で記述するなど、ややスムーズにならないーとか考えてしまっています…。ちょっと「また、Helper::get_template_partでフックしているtemplate_partsを呼び出すと、その呼び出したテンプレートが同filterをフックをしている場合は、無限ループに陥る」を具体的に想像できなかったのですが、確かに
remove_filter()
は無名関数消せないですね…。♥ 0Who liked: No userSnow Monkey v5.1.2 で修正してみました。どうでしょうか?
♥ 0Who liked: No user -
投稿者投稿