フォーラムへの返信
-
投稿者投稿
-
こうする必要は特にありませんか?
PHPMD で「
else
使うな!」と怒られるんで、必要ないときは使わないクセがつきました^^; 挙動は変わらないのでどちらでも好きなほうで良いと思います。例えばレイアウトの変更などはスタイルの書き出しではなく、条件分岐で読み込むファイルを変える、もしくはCSSクラスを切り替えるなどの処理が必要になってくると思いますが、そちらの方法に関して何かアドバイスいただければ幸いです。
カスタマイザーの設定値は
get_theme_mod( 'xxx' );
で取得できるので、その値で分岐させたりすることになりますね。例えば、$output_description = get_theme_mod( 'output-description' ); if ( true === $output_description ) { // description を出力 }
みたいな。
♥ 0Who liked: No user項目ごとに分割する方法
Snow Monkey がとっている方法です。項目が多くて1ファイルだとすごく長くなってしまうので、各パネル、各セクション、各コントロールごとにファイルを分割し、それぞれ include する、という方法をとっています。
// snow-monkey/functions.php use Inc2734\Mimizuku_Core\Helper; $includes = [ '/app/customizer', ]; foreach ( $includes as $include ) { Helper\load_theme_files( __DIR__ . $include ); }
上記のコードが
app/customizer
の中にある各カスタマイザーの項目(パネル、セクション、コントロール)を読み込む、という処理になります。Inc2734\Mimizuku_Core\Helper\load_theme_files
というメソッドで読み込んでいますが、これは inc2734/mimizuku-core というライブラリの中で定義された関数なので、WP Customizer Framework だけを使いたい場合は使用できません。なので、うーん、ちょっとめんどうですが、1ファイルずつ include させるのが簡単かもしれません。こんな感じ。読み込み順番は、パネル、セクション、コントロールになるようにする必要があります(多分そうしないと未定義でコケちゃう)。include_once ( get_template_directory() . '/app/customizer/design/panel.php' ); include_once ( get_template_directory() . '/app/customizer/design/sections/base-design/section.php' ); include_once ( get_template_directory() . '/app/customizer/design/sections/base-design/controls/accent-color.php' ); include_once ( get_template_directory() . '/app/customizer/design/sections/base-design/controls/base-font-size.php' ); include_once ( get_template_directory() . '/app/customizer/layout/panel.php' ); include_once ( get_template_directory() . '/app/customizer/layout/sections/header/section.php' ); include_once ( get_template_directory() . '/app/customizer/layout/sections/header/controls/header-layout.php' );
あとは、Snow Monkey のファイルを参考に見てもらえればと思います。
次に、スタイルの定義についてです。これは
snow-monkey/app/setup/customizer-styles.php
で各スタイル定義用のファイルを読み込んでいます。こちらも inc2734/mimizuku-core のメソッドを使ったりしているので、単純化すると下記のような感じです。add_action( 'wp_loaded', function() { include_once( get_template_directory() . '/assets/css/foundation/_body/_body.php' ); include_once( get_template_directory() . '/assets/css/object/component/_btn/_btn.php' ); ... }, 11 // この数字は Snow Monkey デザインスキンを動作させる都合で必要なものなので、なくても構いません );
/assets/css/foundation/_body/_body.php
などのコードは Snow Monkey のファイルを参考にしてみてください。
わからない、動かない、などあればお気軽に書き込みどうぞ!
♥ 0Who liked: No user項目を増やしていく方法には、大きく分けて2パターンあると思います。1つは単純に1ファイルに追加していく方法、もう一つは Snow Monkey のように項目ごとに分割する方法です。それぞれにサンプルを書いてみますね。
基本的な考え方
あえて書く必要はないのかもしれませんが、理解しておいたほうがわかりやすいかなと思いますので、まず基本的な考え方を書いておきます。
「パネルの中のセクションの中のコントロール」という考え方ではなくて、「独立したコントロール、セクション、パネルがそれぞれあり、コントロールをどのセクションに属させるか、セクションをどのパネルに属させるかを定義する」と考えてください。
単純な方法
では、まず1ファイルに書いていく方法です。
$customizer = \Inc2734\WP_Customizer_Framework\Customizer_Framework::init(); $customizer->panel( 'design', [ ... ] ); $customizer->section( 'base-design', [ ... ] ); $customizer->control( 'color', 'accent-color', [ ... ] ); $customizer->control( 'number', 'base-font-size', [ ... ] ); if ( is_customize_preview() ) { $panel_design = $customizer->get_panel( 'design' ); $section_base_design = $customizer->get_section( 'base-design' ); $control_accent_color = $customizer->get_control( 'accent-color' ); $control_accent_color->join( $section_base_design )->join( $panel_design ); $control_base_font_size = $customizer->get_control( 'base-font-size' ); $control_base_font_size->join( $section_base_design )->join( $panel_design ); } $customizer->panel( 'layout', [ ... ] ); $customizer->section( 'header', [ ... ] ); $customizer->control( 'select', 'header-layout', [ ... ] ); if ( is_customize_preview() ) { $panel_layout = $customizer->get_panel( 'layout' ); $section_header = $customizer->get_section( 'header' ); $control_header_layout = $customizer->get_control( 'header-layout' ); $control_header_layout->join( $section_header )->join( $panel_layout ); }
add_action( 'wp_loaded', function() { $customizer = \Inc2734\WP_Customizer_Framework\Customizer_Framework::init(); $cfs = $customizer->styles(); $accent_color = get_theme_mod( 'accent-color' ); // accent-color を使ったスタイルの定義を書く $cfs->register( ... ); // base-font-size を使ったスタイル定義を書く $cfs->register( ... ); });
移動中に書いていて実際に試せていないので構文エラーなどがあるかもしれません、その際は適宜修正してください…(すみません><)。
♥ 0Who liked: No userv4.4.5 で修正しました!
♥ 0Who liked: No userあ!!ほんとだ、すみません!
とりあえずの対策ですが、
/app/public/wp-content/themes/snow-monkey/app/setup/dependency/elementor.php
の、if ( ! defined( 'ELEMENTOR_VERSION' ) ) {
の上の行にuse Inc2734\Mimizuku_Core\Helper;
と入れていただくと解決するかと!♥ 0Who liked: No user自由入力はちょっとむずかしいので、やるとしたら選択肢を増やすパターンですかね。25%、50% を追加は構造上スマートにできます。
もっと自由に調整したい場合は、ブロックのインスペクタ(選択するとページ右側にでる設定パネル)に独自の CSS クラスを入力できる欄があるので、そこに適当なクラスをふって、子テーマや追加 CSS でそのクラスを使ってサイズを調整する方法もありますね。
♥ 0Who liked: No userv4.4.1 ためしてみてください!
♥ 0Who liked: No userただこれ、次に開いたときにビジュアルエディタで開いちゃうと、勝手に改行されちゃうんですよね(そして
タグも消されてしまう…)ありゃそうなんですね。いま試してみていて、うまくいきそうなので、もうすぐアップデートできると思います。しばしおまちください…
♥ 0Who liked: No userあーなるほどです。タグを削除して目次に入れる処理をしているのですが、改行コードは削除してなかったので、その分が空白として画面表示されちゃうみたいですね。
ちょっと改行コードもきれいに消せるように修正できるか試してみようと思いますが、それまでのとりあえずの対策として、ビジュアルモードじゃなくてテキストモードに切り替えて「365日ずっと綺麗な<br>髪でいたい!」と、改行をけして1行にしてみると空白がなくなるかもしれません。可能であれば試されてみてください!
♥ 0Who liked: No user早速確認ありがとうございます。動作したとのことで良かったです!
クローズも助かります!
♥ 0Who liked: No user早速確認ありがとうございます。動作したとのことで良かったです!
クローズも助かります!
♥ 0Who liked: No userv4.4.0 から、下記のコードで制御できるようになります。来週月曜リリース予定です!
add_filter( 'inc2734_wp_awesome_widgets_taxonomy_posts_widget_args', function( $args ) { if ( is_singular() ) { $args['post__not_in'] = [ get_the_ID() ]; $args['orderby'] = 'name'; } return $args; } );
♥ 0Who liked: No user「WPAW: 任意のタクソノミーの投稿ウジェット」は現状、条件をカスタマイズするためのフックがないんです…。v4.4.0 のアップデートにあわせて組み込もうと思いますのでしばしお待ちいただければと思います!
♥ 0Who liked: No userおお、そうですか…。報告いただいて修正した筈なんですがなんでかな…。よろしければ、そのページの URL を教えてもらえませんか?
♥ 0Who liked: No userv4.4.0 ベータ5をお使いでしょうか?
♥ 0Who liked: No user -
投稿者投稿