フォーラムへの返信
-
投稿者投稿
-
ただサイドバーの投稿タイプで、カスタム投稿タイプごとに選べていたのが、プルダウンが投稿一つのみになってしまったため管理画面で調整できず、すべての「最近の投稿」ブロックに対してアンカーを設定することで調整しています。最初は選べていたと思うのですが・・・。
そこへの表示条件は、
– その投稿タイプの
show_in_rest
がtrue
になっていること
– その投稿タイプが階層ありになっていないこととなります。投稿タイプの設定を見直してみてください!
こちらの操作が管理画面上で表示されずできない形です。何かわかりましたら教えてください。
選択している投稿タイプが「投稿」のときは、メタ情報がデフォルトで表示されるので、「各項目のメタ情報を強制的に表示する」の設定が表示されないようになっています。まずは「投稿」以外を選択できるようにしてから、「投稿」以外の投稿タイプを選択すると設定が表示されるようになるはずです。
まず、
snow_monkey_forms/spam/validate
フィルターフックは現状だと引数は spam かどうかの1つだけになります。なので、提示いただいたコードのように4つの引数を受け取ることはできません。そして、返り値も spam かどうか、つまりtrue
かfalse
だけなのでsprintf( '「%s」は、日本語で入力してください。', $label )
のようにメッセージを返すことはできません。ということで、
snow_monkey_forms/spam/validate
で送信内容を受け取ったり、メッセージを返すことはできないのですが、このフックで送信内容をもとに spam かどうか判定するのは結構使えるなと思うので、ここには送信内容を取得できる引数を追加したほうが良さそうだなと思いました!で、現状でできる方法を考えてみました。メッセージを返す方法は思いつかなかったのですが、送信内容をもとに管理者宛メールを送信するかどうかはカスタマイズできるので、ちょっとコードを書いてみました。
下記のコードを My Snow Monkey プラグインか子テーマの
functions.php
に追加してみてください。対象とする項目にあわせて適宜改変してください!add_filter( 'snow_monkey_forms/administrator_mailer/is_sended', function( $is_sended, $responser ) { $message = $responser->get( 'message' ); // 対象の項目の name を指定 if ( ! preg_match( '/[一-龠]+|[ぁ-ん]+|[ァ-ヴー]/u', $message ) ) { return false; // 管理者宛メールの送信に失敗させる } return $is_sended; }, 10, 2 );
♥ 0Who liked: No userありがとうございます。こちらでも最近の投稿ウィジェットを入れて試してみたのですが、エラーを再現できませんでした。
エラーメッセージ的には投稿タイプの指定が抜けている(
null
)からエラーになっているように見えるのですが、最近の投稿ウィジェットは挿入した段階でデフォルトの指定が「投稿」になっているし、もし何らかの事情でnull
だったとしても、表示するタイミングで強制的に「投稿」に設定して表示するようにしているので、ちょっとなぜそのエラーがでているのかわかりません…。inc2734_wp_awesome_widgets_render_widget
フックは↑の「null
だったら「投稿」に設定して〜」の後に実行されるので、もしこのフックで何らかのカスタマイズをおこなっているならエラーが出る可能性はあります。特にそういうカスタマイズをしていないということであれば、もうこの最近の投稿ウィジェットを一回消して、新しく最近の投稿ブロックをいれるというのも試してみると良いかもしれません。
♥ 0Who liked: No user・カテゴリー名を出すように、カスタム投稿のラベルを一覧のタイトルの左側に表示させたい
下記でどうでしょうか?
/* 最近の投稿、レイアウトが「テキスト」のとき、カテゴリーラベルを強制的に表示させる */ .smb-tabs .c-entries--text .c-meta__item--categories { display: inline-flex !important; } /* PC サイズのとき */ @media (min-width: 1024px) { /* メタ情報のサイズがデフォルト 8em で、カテゴリーラベルが折り返されてしまうので auto にする */ .smb-tabs .c-entries--text .c-entry-summary__body > .c-entry-summary__meta { width: auto; } /* 日付を 8em で表示する(状況にあわせて変えてください) */ .smb-tabs .c-entries--text .c-entry-summary__body > .c-entry-summary__meta .c-meta__item--published { width: 8em; } /* カテゴリーラベルを 8em で表示する(状況にあわせて変えてください) */ .smb-tabs .c-entries--text .c-entry-summary__body>.c-entry-summary__meta .c-meta__item--categories { width: 8em; } }
ひとまず、下記の実現したいと思います。
ホームページ下部に最近の投稿ブロックをタブの中に配置して、各タブごとに出す投稿を「全部」「通常投稿のカテゴリーお知らせ」「カスタム投稿①」「カスタム投稿②」としたいです。
・投稿日付をカスタム投稿でも出したい
方法をまとめます。
– 「ホームページ」に割り当てた固定ページに「タブ」ブロックを設置する。
– 上記のタブブロックにタブを4つ追加する(「全部」「通常投稿のカテゴリーお知らせ」「カスタム投稿①」「カスタム投稿②」)。
– 上記のそれぞれのタブにそれぞれ「最近の投稿」ブロックを配置する。
– 「全部」用の最近の投稿ブロックの「HTML アンカー」に「all-entries」と入力する。
– 「通常投稿のカテゴリーお知らせ」用の最近の投稿ブロックは投稿タイプを「投稿」カテゴリーを「お知らせ」に設定する。
– 「カスタム投稿①」「カスタム投稿②」用の最近の投稿ブロックは投稿タイプをそれぞれ「カスタム投稿①」「カスタム投稿②」に設定する。さらに、「各項目のメタ情報を強制的に表示する」を有効化し、「各項目の公開日を表示する」も有効化する。
– 「全部」用の最近の投稿ブロックの投稿タイプの指定をフックでカスタマイズするために、下記のコードを追加する。add_filter( 'snow_monkey_recent_posts_widget_args_all-entries', // 「all-entries」の部分は「HTML アンカー」に入力した文字列にする function( $query_args ) { $query_args['post_type'] = array( 'post', 'カスタム投稿①', 'カスタム投稿②' ); return $query_args; } );
以上を試してみてください。
・カテゴリー名を出すように、カスタム投稿のラベルを一覧のタイトルの左側に表示させたい
上記については調査後にまた書き込みます。
♥ 0Who liked: No user2のほうは、この一覧部分は Snow Monkey Blocks の最近の投稿ブロックを設置している状態ですかね?
それとも、ウイジェットでしょうか?
また、そのブロック(またはウィジェット)の投稿タイプの設定はどうなっていますか?
♥ 0Who liked: No userウィジェットエリアに置いているのにかかわらず、ウィジェットになっていないのでしょうか?
ウィジェットエリアにタブブロックを配置し、その中に最近の投稿ブロックを入れている、という認識であっていますかね?
また、
各タブごとに出す投稿を「全部」「通常投稿のカテゴリーお知らせ」「カスタム投稿①」「カスタム投稿②」としたいです。
上記自体は実現できているのでしょうか?
クラス名が「wp-block-snow-monkey-blocks-recent-posts」となっていますので、ウィジェットエリアに置いているのにかかわらず、ウィジェットになっていないのでしょうか?
現行の WordPress では、ウィジェットエリアにもブロックを配置するようになっています。ウィジェットを配置するにはレガシーウィジェットブロックを使うか、クラシックウィジェットプラグインをインストールすることになります。
もしウィジェットエリアを使わずにページの編集画面に入れても実現できる状況なら、ウィジェットエリアを使わないほうが複雑にならずには済むと思います。
僕が状況をまだよく理解できていないので、可能ならそのページが現状どうなっているかを見てみたいです。
♥ 0Who liked: No userご確認ありがとうございます! 一応 Snow Monkey v25.4.5 で、関連付けされていなくてもエラーがでないように修正しています。
解決済みということで、トピックのクローズをお願いします!
♥ 0Who liked: No user上記のトピックのコードは
'archive' === $args['vars']['_context']
で分岐させることでアーカイブページの一覧部分にだけ効果を限定させていました。関連記事の場合は_context
がsnow-monkey/related-posts
なのでその場合も適用されるようにコードを変更すれば良いです。if ( 'archive' === $args['vars']['_context'] || 'snow-monkey/related-posts' === $args['vars']['_context'] ) { .... }
♥ 0Who liked: No userカスタムロゴが設定されていない、画像の height が取得できないときは表示されません。
カスタムロゴが設定されているか、svg をアップロードできるようにしている場合は height 属性をつけているか確認してみてください。
♥ 0Who liked: No userカスタムタクソノミーを定義されているかと思いますが、そのカスタムタクソノミーは何らかの投稿タイプと関連付けがされていますでしょうか?
register_taxonomy()
でカスタムタクソノミーを定義している場合は、object_type
引数で指定している投稿タイプになります。♥ 0Who liked: No userカテゴリーアーカイブページは
body
にcategory-update-info
のようなクラスが付与されています。カテゴリーのスラッグは環境によって変わるので、ご自身のページで確認してみてください。そして、下記のような CSS で非表示にすれば良いのかなと思います。.category-update-info .p-archive .c-meta__item--published { display: none; }
記事ページも同じような感じで非表示にできます。
.category-update-info .c-entry__header .c-meta__item--published { display: none; }
♥ 0Who liked: No userテスト環境は PHP のバージョンが違うようでしたら、バージョンかもしれません。確認して修正を入れます!
♥ 0Who liked: No user上記のコードだと、
is_author
のときしかreturn
していないので、その他の条件のときも(無加工の値を)返す必要があると思います。こうしてみるとどうですかね?add_filter( 'snow_monkey_template_part_root_hierarchy_template-parts/loop/entry-summary', function( $hierarchy, $name, $vars ) { if( is_author() ) { $hierarchy[] = __DIR__ . '/override'; return $hierarchy; } return $hierarchy; }, 10, 4 );
-
投稿者投稿