フォーラムへの返信
-
投稿者投稿
-
はっきりした原因はまだわからないのですが、下記の変更でエラーはなくなりそうです。一度試してみてください!
snow-monkey-forms/App/Controller/Invalid.php
のprotected function set_controls() { $controls = array(); $setting_controls = $this->setting->get_controls( false ); foreach ( $setting_controls as $name => $_controls ) { $value = $this->responser->get( $name ); $error_messages = $this->validator->get_error_messages( $name ); foreach ( $_controls as $i => $control ) { $control->save( $value ); $controls[ $name ][ $i ] = $error_messages[ $i ] ? $control->invalid( implode( ' ', $error_messages[ $i ] ) ) : $control->input(); } } return $controls; }
を
protected function set_controls() { $controls = array(); $setting_controls = $this->setting->get_controls( false ); foreach ( $setting_controls as $name => $_controls ) { $value = $this->responser->get( $name ); $error_messages = $this->validator->get_error_messages( $name ); foreach ( $_controls as $i => $control ) { $control->save( $value ); $error_message = $error_messages[ $i ] ?? false; $controls[ $name ][ $i ] = $error_message ? $control->invalid( implode( ' ', $error_message ) ) : $control->input(); } } return $controls; }
に変更。
♥ 0Who liked: No userあ!ちょっと怪しいところをみつけたので、可能であれば下記も試してみてください(無理そうなら大丈夫です)。
snow-monkey-forms/App/Model/Validator.php
のprotected function _set_validation_map( Setting $setting ) { $validation_map = array(); foreach ( $setting->get_controls( false ) as $name => $_controls ) { foreach ( $_controls as $control ) { $validations = $control->get_property( 'validations' ); if ( ! $validations ) { continue; } $validation_map[ $name ][] = (array) $validations; } } return $validation_map; }
を
protected function _set_validation_map( Setting $setting ) { $validation_map = array(); foreach ( $setting->get_controls( false ) as $name => $_controls ) { foreach ( $_controls as $i => $control ) { // ← この行を変更 $validations = $control->get_property( 'validations' ); if ( ! $validations ) { continue; } $validation_map[ $name ][ $i ] = (array) $validations; // ← この行を変更 } } return $validation_map; }
に変更。
♥ 0Who liked: No userありがとうございます!!
エラーにならないフォームはデフォルトの名前とメールアドレス、メッセージのみの項目で、エラーになるフォームはチェックボックスなど他の項目も追加しています。
となるとカスタマイズではなくてくて、設定によって不具合が発生するようになってしまっているのかもしれません。
フォームを直接確認したいのですが、DM でも構いませんので、ページの URL を教えていただくことは可能でしょうか?♥ 0Who liked: No user一応このサイトと、テストサイトを立てて2つの環境で試してみたのですが、エラーは確認できませんでした。
なのでフックでカスタマイズしていると発生するとか、何らかの設定やその組み合わせで発生するのかもしれません。
もし PHP でカスタマイズをされているようであればどのようなカスタマイズをしているのかも教えてください!♥ 0Who liked: No userサーバーのエラーログに詳細なエラーがでていると思うので、それを見せてもらうことは可能でしょうか?
♥ 0Who liked: No userんーこうですかね?
<a class="administrative-scrivener-tag--<?php echo esc_attr( $post_tag_term->slug ); ?>" href="<?php echo esc_url( get_term_link( $post_tag_term ) ); ?>"><?php echo esc_html( $post_tag_term->name ); ?></a>
id
は個別になるようにしていたので、その値をclass
に移しました。細かい要件は僕にはわからないので、ご自身で調整してみてください!①各タクソノミーにclassの付与方法
この辺は普通の HTML と同じなので、自分がつけたいところに
class
を追加すれば良いです。例えば。<a href="<?php echo esc_url( get_term_link( $post_tag_term ) ); ?>"><?php echo esc_html( $post_tag_term->name ); ?></a>
↓
<a class="administrative-scrivener-tag" href="<?php echo esc_url( get_term_link( $post_tag_term ) ); ?>"><?php echo esc_html( $post_tag_term->name ); ?></a>
②IDがあるのであれば知りたいです。
ID というのはどういう意味ですかね…?単純に
class
と一緒に付与するid
属性ということでしょうか?もしそうだとするなら、これも自分で好きな値で
id
を追加すれば良いです。スラッグは他と被らないはずなので、slug
を使うのが良いのではないでしょうか(もしくはterm_id
)。<a id="administrative-scrivener-tag--<?php echo esc_attr( $post_tag_term->slug ); ?>" class="administrative-scrivener-tag" href="<?php echo esc_url( get_term_link( $post_tag_term ) ); ?>"><?php echo esc_html( $post_tag_term->name ); ?></a>
あ、すみません、今気づいたのですが、最近の投稿ブロックの各項目は
a
要素で囲ってあるから、タグにリンクを貼ることはできないですね。HTML の仕様的にa
は入れ子にできないので。なのでリンクさせるのはやめてこういう形にしたほうが良いかなと思います。<a href="<?php echo esc_url( get_term_link( $post_tag_term ) ); ?>"><?php echo esc_html( $post_tag_term->name ); ?></a>
↓
<span><?php echo esc_html( $post_tag_term->name ); ?></span>
リプライするときに整形されるから?なのかコードが崩れているので整形してみました。
あと、コードの途中にちゃんとタグの情報が取得できているか確認するために
var_dump(...);
を追加してみました。ちゃんと取得できているならタグの情報が画面上に表示されるはずです。表示されないなら紐づけができていないか、名前が間違っている可能性がありそうです。add_filter( 'snow_monkey_template_part_render_template-parts/loop/entry-summary/title/title', function ($html) { // カスタムフィールドで設定したフィールド名を代入 $acf_name_area = get_field('name_area'); $acf_region_area = get_field('region_area'); $acf_specialty_genre = get_field('specialty_genre'); // テンプレートのh3タグの後に <div class="property-info">を追加 $acf_property_info = '</h3><div class="property-info">' . '<div class="property-body">' . '<div class="property-content">' . '<dl class="name_area"><span>【代表者名】</span> <dt>' . esc_html($acf_name_area) . '<dt></dl>' . '<dl class="region_area"><span>【地域】</span> <dt>' . esc_html($acf_region_area) . '<dt></dl>' . '<dl class="specialty_genre"><span>【取扱業務】</span> <dt>' . esc_html($acf_specialty_genre) . '<dt></dl>' . '</div>' . '</div>' . '</div>'; // テンプレートパーツのh3タグの後ろにdivタグを追加する $html = str_replace( '</h3>', $acf_property_info, $html ); return $html; // テンプレートパーツのh3タグの後ろにdivタグを追加する $html = str_replace( '</h3>', $acf_property_info, $html ); // 記事に紐づいている post_tag の各タームのアーカイブページへのリンクを表示する $post_tag_terms = get_the_terms(get_the_ID(), 'administrative_scrivener_tag'); var_dump( $post_tag_terms ); // テスト用 ob_start(); if (is_array($post_tag_terms)) { foreach ($post_tag_terms as $post_tag_term) { ?> <a href="<?php echo esc_url( get_term_link( $post_tag_term ) ); ?>"><?php echo esc_html( $post_tag_term->name ); ?></a> <?php } } $administrative_scrivener_tags = ob_get_clean(); var_dump( esc_html( $administrative_scrivener_tags ) ); // テスト用 $html = $html . $administrative_scrivener_tags; return $html; } );
-
投稿者投稿