フォーラムへの返信
-
投稿者投稿
-
ショートコードを使う形で考えてみました。下記のコードを My Snow Monkey プラグインか子テーマの
functions.phpに貼り付けた上で、任意の固定ページに[all_entries_archive]というショートコードを埋め込んでください。add_shortcode( 'all_entries_archive', function() { query_posts( [ 'post_type' => array( 'post', 'news' ), // 表示したい投稿タイプを指定 'paged' => get_query_var( 'paged' ), ] ); // template-parts/archive/entry/entry にわたす引数を指定。 // 希望に合わせて書き換えてください。 $args = array( '_display_archive_top_widget_area' => false, '_display_description' => false, '_display_entry_header' => false, '_display_eyecatch' => false, '_entries_layout' => get_theme_mod( 'post-entries-layout' ), '_entries_gap' => get_theme_mod( 'post-entries-gap' ), '_force_sm_1col' => false, '_infeed_ads' => false, ); ob_start(); \Framework\Helper::get_template_part( 'template-parts/archive/entry/entry', 'all-entries', $args ); wp_reset_query(); return ob_get_clean(); } );「投稿一覧ブロック」というのは Snow Monkey Blocks の最近の投稿ブロックのことですかね?
そうだとして、最近の投稿ブロックはあくまで「お知らせ等を数件出す用」のブロックなので、最近の投稿ブロックを使ってページとしての記事一覧をつくることはできません。
また、最近の投稿ブロックのクエリを書き換えるフックは
snow_monkey_recent_posts_widget_argsになります。pre_get_postsはそのページ自体のクエリを書き換えるフックです。ということで、やるとしたら下記のいずれかになるのかなと思います。
1. その固定ページ用のオリジナルテンプレートをつくり、PHP でクエリの発行、記事の取得から出力まで全部独自に書く。
2. その固定ページから、テンプレートパーツtemplate-parts/archive/entry/entryに適切な引数を渡して何らかの方法で読み込む。Snow Monkey テーマ以外での一般的な方法は 1 かなと思います。Snow Monkey なら 2 の方法がとれます。
僕もまだ試していないので現時点では「何らかの方法」と書いています^^; ので、ちょっとやり方を調べてみます。♥ 0Who liked: No userRSS ブロックは、WordPress 標準の関数である
fetch_feed()を使っています。コードを読んでみると
apply_filters( 'wp_feed_cache_transient_lifetime', 12 * HOUR_IN_SECONDS, $url )というコードがありましたので、おそらくデフォルトでは12時間キャッシュされるのではないかなと思います。ここにフックすれば変更ができると思うので、下記のコードを My Snow Monkey プラグインか子テーマの
functions.phpに追加してみてください。add_filter( 'wp_feed_cache_transient_lifetime', function() { return 600; // 600秒 } );表示件数を増やす(ページャーを加える)方法があったら教えて下さい
ページャーは表示できません。
♥ 0Who liked: No userすみません、ちょっと具体的にどのような状況になっているのかがわからないので、ここをこうしたら良いというのをお伝えするのが難しいです…。
要件が
– トップページに全幅のスライダーを配置したい
– トップページのヘッダー位置はオーバーレイにしたい
– その他のページのページレイアウトはスリム幅、かつページヘッダーにアイキャッチ画像を表示したい
– その他のページのヘッダー位置はノーマルだとすると、
– ホームのページテンプレートはデフォルトテンプレート
– ホームに全幅のスライダーブロックを配置する
– カスタマイザー → ホームページ設定 → PC 用ヘッダー位置を「オーバーレイ」にする
– カスタマイザー → デザイン → 固定ページ設定 → ページレイアウトを「1カラム(スリム幅)」にする
– カスタマイザー → デザイン → 固定ページ設定 → アイキャッチ画像の位置を「ページヘッダー」にする
– カスタマイザー → デザイン → ヘッダー → PC 用ヘッダー位置は「ノーマル」にするで実現できると思うので試してみてください。
これでうまくいかない場合は、実際のページを見せていただくか、あるいは設定状況と実際のページのスクショを見せていただきたいです。
♥ 0Who liked: No userちなみにではございますが、更新を押すと更新失敗となってしまうのですが、無料で配布されていたときのものだからでしょうか・・?
あれ、、なんででしょう…。よかったら、オンラインコミュニティ(Discrod)で DM いただけますでしょうか?
♥ 0Who liked: No userもし最新版でないなら最新版にアップデートしてください。そして、先の CSS は全部消して、下記の CSS を試してみてください。
/* position で重ねるとメガメニューの位置がずれるので、grid で対応する */ .snow-monkey-mega-menu { display: grid !important; } .snow-monkey-mega-menu > a { max-width: none !important; } /* リンクとトグルボタンを重ねる */ .snow-monkey-mega-menu > a, .snow-monkey-mega-menu > .c-navbar__toggle { grid-column: 1 / -1; grid-row: 1/ -1; } .snow-monkey-mega-menu > .c-navbar__toggle { width: 100% !important; } /* トグルボタンの矢印を消す */ .snow-monkey-mega-menu > .c-navbar__toggle * { display: none; }♥ 0Who liked: No userもう一点すみません、Snow Monkey Mega Menu のバージョンはいくつでしょうか?
♥ 0Who liked: No userんーなるほど、他の設定と競合しているのかもしれません。
確認できる URL を共有していただくか、カスタマイザーでグローバルナビゲーションまわりのカスタマイズをしていたり、コードを追加してグローバルナビゲーションまわりのカスタマイズをしている場合はどのようなことを行っているか具体的に教えてください。
♥ 0Who liked: No userまず、アイキャッチ画像があるときはページヘッダーに表示されるように設定します。
適当な投稿を開いた状態でカスタマイザーを開き、デザイン → 投稿ページ設定 → アイキャッチ画像の位置で「ページヘッダー」を選択して保存してください。
次に、下記のコードを My Snow Monkey プラグイン、または子テーマの
functions.phpに貼り付けてください。/** * 画像がないときでもページヘッダーに画像を表示する */ add_filter( 'snow_monkey_is_output_page_header', function( $is_output ) { // 投稿のとき if ( is_singular( 'post' ) ) { return true; } return $is_output; } ); /** * ページヘッダーにその投稿が属するカテゴリー名を表示する * また、ページヘッダーのメタ情報は非表示にする */ add_filter( 'snow_monkey_get_template_part_args_template-parts/common/page-header', function( $args ) { // 投稿のとき if ( is_singular( 'post' ) ) { // その投稿が属するカテゴリーの情報を取得 $the_categories = get_the_category(); $categories = array(); foreach ( $the_categories as $category ) { $categories[] = $category->name; } // カテゴリー名を表示(複数ある場合に備えてカンマ区切りで表示する) $args['vars']['_title'] = implode( ',', $categories ); // メタ情報を非表示 $args['vars']['_display_entry_meta'] = false; } return $args; } );機能としては無いので、トグルボタンを CSS でリンクに重ねる感じはどうですかね?
.p-global-nav .c-navbar__item { position: relative; } .p-global-nav .c-navbar__item > a { max-width: none !important; } .p-global-nav .c-navbar__item > .c-navbar__toggle { position: absolute; inset: 0; z-index: 1; width: 100% !important; } .p-global-nav .c-navbar__item > .c-navbar__toggle span { display: none; }♥ 0Who liked: No userSnow Monkey のグローバルナビゲーションにはポップアップモードというオプションがあって、サブメニューの展開方法をフックでカスタマイズすることができます。
下記のコードはサブメニューの展開方法をクリックに変更します。My Snow Monkey プラグインか子テーマの
functions.phpに貼り付けてみてください。add_filter( 'snow_monkey_get_template_part_args_template-parts/nav/global', function( $args ) { $args['vars']['_popup-mode'] = 'click'; return $args; } );ただ、メガメニューには完全対応していないので、ちょっと CSS で調整が必要になるかもしれません><
♥ 0Who liked: No userただサイドバーの投稿タイプで、カスタム投稿タイプごとに選べていたのが、プルダウンが投稿一つのみになってしまったため管理画面で調整できず、すべての「最近の投稿」ブロックに対してアンカーを設定することで調整しています。最初は選べていたと思うのですが・・・。
そこへの表示条件は、
– その投稿タイプの
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 -
投稿者投稿

