すいません、うまくいかなかったので一旦ウィジットにもどしてしまいました・・・。
実際書いたコードは下記ですが、書き方は合ってそうでしょうか?
【function.php】
// ID 番号(HTMLアンカー)が pickup の最近の投稿ブロックが表示する記事の条件を変更する
// pickup タグ + ランダム + 4件
// PCでは最後の1件を非表示にして 、PCでは3件表示、スマホ等では4件表示してレイアウトを調整するようにCSSで指定する
add_filter( 'snow_monkey_recent_posts_widget_args_pickup', function( $query_args ) {
$query_args['tag'] = 'pickup';
$query_args['posts_per_page'] = 4;
$query_args['orderby'] = 'rand';
return $query_args;
} );
【CSS】
/**SNOWMONKEY最新の投稿ブロックのID(HTMLアンカー)がpickupの場合(今回はPICKUP部分) */
/* PC では最後の1個を消す */
/* 特定IDのウィジェットにだけ適用するため id セレクタ(#snow_monkey_blocks_recent_posts-pickup)を指定した */
@media (min-width: 64em) {
#snow_monkey_blocks_recent_posts-pickup .snow-monkey-recent-posts .c-entries__item:last-child {
display: none;
}
}
トピックを新しく立てる方は次の項目も記述してください(要望トピックの場合は不要です)。
【お使いの Snow Monkey のバージョン】v5.6.1
【お使いのブラウザ】chome,safari,firefox
【当該サイトのURL】(公開できる場合は書いていただいたほうがスムーズです)
===
以前に下記のトピックで質問した内容ですが、
最近の投稿ブロックにidが指定できるようになったので、
ウィジットからブロックに切り替えたいと思っています。
この中のカスタマイズで、
function.phpに下記のコードを書き、ID部分をブロックでHTMLアンカーに指定した文字列に変更しました。
// ID 番号が 12345 のウィジェットが表示する記事の条件を変更する
// pickup タグ + ランダム + 4件
add_filter( 'snow_monkey_recent_posts_widget_args_12345', function( $query_args ) {
$query_args['tag'] = 'pickup';
$query_args['posts_per_page'] = 4;
$query_args['orderby'] = 'rand';
return $query_args;
} );
そして、CSSにてIDセレクタを使って下記のように書きました。(xxxはHTMLアンカーで指定した文字列)
/* PC では最後の1個を消す */
/* 下記の例だと Snow Monkey: 最近の投稿ウィジェット全部に反映されるので、特定のウィジェットにだけ適用したいなら id セレクタで指定したほうが良いかも */
@media (min-width: 64em) {
.snow_monkey_blocks_recent_posts-xxx .c-entries__item:last-child {
display: none;
}
}
この場合に、fanction.phpの記述はきちんと反映されるのですが、
CSSの記述が反映されないようで、「PCでは最後の1つを消す
」ができません。
キャッシュを消すなどを試してみましたが、うまくいきませんでした。
うまく反映できる書き方がわかれば教えていただきたいです。
よろしくお願いいたします。
Snow Monkey Blocks v3.1.6 から、最近の投稿ブロック > 高度な設定 > アンカーで ID が設定できるようになりました。そのため、最近の投稿ブロックでも snow_monkey_recent_posts_widget_args_<id>
のフィルターフックが使用できるようになりました。
あと、Snow Monkey v5.4.8 では、ブロックではないのですが、最近の投稿ブロックと同じデザインで、カテゴリー絞り込みの最新記事一覧を表示できる「Snow Monkey: 任意のタクソノミーの投稿」ウィジェットを追加しました。記事ごとにウィジェットエリアをつくるなどすれば、それを使うこともできるかな…?と思いました。
ウィジェットには、それぞれクエリを改変するフックを用意しています。
「Snow Monkey: 最近の投稿」の場合はこちら。
add_filter(
'snow_monkey_recent_posts_widget_args',
function( $args ) {
$args['post_type'] = [ 'post', 'news' ];
return $args;
}
);
「WPAW: 最近の投稿」の場合はこちら。
add_filter(
'inc2734_wp_awesome_widgets_recent_posts_widget_args',
function( $args ) {
$args['post_type'] = [ 'post', 'news' ];
return $args;
}
);
上記の場合は全ての「Snow Monkey: 最近の投稿」「WPAW: 最近の投稿」に反映されますが、特定のウィジェットだけに限定したい場合は snow_monkey_recent_posts_widget_args_11111
(11111 のところはウィジェットの ID に含まれる数字で、ウィジェットの HTML を見るとわかります)のようにして限定させることができます。
ちなみに、、、今バグがあって、 snow_monkey_recent_posts_widget_args
の post_type
に配列を指定することができません(any はできます)。すぐ修正アップデートかけます。
ありがとうございます。
高さのずれが修正されました。
それと、「Snow Monkey: 最近の投稿」へのカスタム投稿タイプ追加を試みたのですが、反映されませんでした。以下の内容は間違っていますでしょうか
※カスタム投稿タイプnews_tokyo ウィジェットIDは2です。
2行目は、category_nameとpost_typeの両方でやってみました。
add_filter( 'snow_monkey_recent_posts_widget_args_2', function( $query_args ) {
$query_args['post_type'] = 'news_tokyo';
$query_args['posts_per_page'] = 6;
return $query_args;
} );
あれ、、、これでどうでしょう?
@media (min-width: 1025px) {
#wpaw-recent-posts-inc2734_wp_awesome_widgets_recent_posts-18 {
overflow: hidden;
}
#wpaw-recent-posts-inc2734_wp_awesome_widgets_recent_posts-18 .wpaw-recent-posts__list {
display: flex;
flex-wrap: wrap;
margin: 0 -1.5rem -1.5rem;
}
#wpaw-recent-posts-inc2734_wp_awesome_widgets_recent_posts-18 .wpaw-recent-posts__item {
flex: 1 1 50%;
max-width: 50%;
margin: 0;
padding: 0 1.5rem 1.5rem;
}
}
それと、1~3が左側、4~6が右側にするのは、function.phpなどを使う場合、かなり大掛かりになってしまいますでしょうか。
そうですね、カスタマイズというか、ウィジェットをつくるレベルになると思います。
本来は「Snow Monkey: 最近の投稿」ウィジェットでレイアウトをテキスト(1行)でやろうと思ったのですが、カスタム投稿タイプが対応していないようなので、
フックで変更できますよ! snow_monkey_recent_posts_widget_args_ウィジェットID
orderby
と order
を足さないといけないのかもしれません。下記でどうでしょう?
add_filter(
'snow_monkey_recent_posts_widget_args_2',
function( $query_args ) {
$query_args['tag'] = 'event';
$query_args['orderby'] = 'menu_order';
$query_args['order'] = 'ASC';
return $query_args;
}
);
トピックを新しく立てる方は次の項目も記述してください(要望トピックの場合は不要です)。
【お使いの Snow Monkey のバージョン】5.1.0-beta3
【お使いのブラウザ】Chrome最新版
【当該サイトのURL】https://www.hira8.jp/
最近の投稿ウィジェットで、特定のカテゴリーフィルタ後の投稿一覧を出しているのですが、このときにIntuitive Custom Post Orderなどの並び替えプラグインが効かないようなので、効くようにすることはできますでしょうか??
具体的には、コワーキングスペースひらばのトップ「イベント情報」がその箇所になるのですが、ここを上記のフィルタを行って投稿一覧を表示しています。
このイベント一覧を投稿順ではなくて、並び替えして開催日順に並び替えたいというのが目的です。
フックは以下のようにしています
add_filter(
'snow_monkey_recent_posts_widget_args_2',
function( $query_args ) {
$query_args['tag'] = 'event';
return $query_args;
}
);
本質とはそれますが、 return
の位置が間違っていたのでちょっと整形しました。
add_filter(
'snow_monkey_recent_posts_widget_args',
function( $query_args ) {
if ( is_page( 1781 ) ) {
$query_args['post_type'] = 'showcase';
}
return $query_args;
}
);
表示がデフォルトのままで切り替わらず…
何かおかしいところがあるでしょうか?
こちらの環境ではちゃんと反映されました。まずコードが実行されているのかを確かめたいので、下記のような感じで、var_dump()
を挟んでみてコードが実行されているのか確認してみてください。
add_filter(
'snow_monkey_recent_posts_widget_args',
function( $query_args ) {
var_dump( $query_args );
if ( is_page( 1781 ) ) {
$query_args['post_type'] = 'showcase';
var_dump( $query_args );
}
return $query_args;
}
);
すみません…ちょっとうまくいかないのですが、ご相談させてください。
以下のようにしてみたのですが、表示がデフォルトのままで切り替わらず…
何かおかしいところがあるでしょうか?
add_filter( 'snow_monkey_recent_posts_widget_args', function( $query_args ) {
global $post;
if(is_page( 1781 )){
$query_args['post_type'] = 'showcase';
return $query_args;
}
} );
「snow_monkey_recent_posts_widget_args_ウィジェットID」が使えないということは……
内容を任意のカスタム投稿にするには
function.phpでadd_filterにis_page()とかで適用条件を設定すればできそうですね!
そして1ページに2個、違う投稿タイプのウィジェットを入れるのはできない、ということになりますかね
まさにそのとおりです!
ブロックにも固有の ID があれば良いのですがちょっとその辺の仕組みがよくわかっておらず…。将来的に解決できそうであれば解決しようとは思っています。
最近の投稿ブロック、シンプルなテキストリンクだけかと思っていたんですが、アイキャッチ画像ありもできたんですね!失礼しましたm(_ _)m
「snow_monkey_recent_posts_widget_args_ウィジェットID」が使えないということは……
内容を任意のカスタム投稿にするには
function.phpでadd_filterにis_page()とかで適用条件を設定すればできそうですね!
そして1ページに2個、違う投稿タイプのウィジェットを入れるのはできない、ということになりますかね。
まずは、ちょっと試してみますね!
すでにありますよ!最近の投稿ブロック。フック snow_monkey_recent_posts_widget_args
も使えます。ただ、ウィジェットのウィジェットIDみたいに識別子を固定する方法がわからないので、snow_monkey_recent_posts_widget_args_ウィジェットID
フックは使えません。
上記サイト、まだ一部デザインなど含め作り途中なので、完成したらショーケースに申請しますね^^
おー!楽しみです!
あ、「WPAW: 最近の投稿」じゃなくて「Snow Monkey: 最近の投稿」でしたかね。その場合はフック名が先にご提示した inc2734_wp_awesome_widgets_recent_posts_widget_args
じゃなくて記事にあるように snow_monkey_recent_posts_widget_args
になります!
ちなみに、複数のカテゴリースラッグを同時に指定して絞り込むことも可能な感じでしょうか?
条件は WP_Query
と同じものを指定できます。
category_name
じゃなくて、'category__in' => [ 2, 6 ],
のようにカテゴリーIDで複数指定できるみたいです。
パラメーターには、WP_Query
と同じものが使用できます。
下記のような感じでどうでしょう?
// ID 番号が 12345 のウィジェットが表示する記事の条件を変更する
// pickup タグ + ランダム + 3件
add_filter( 'snow_monkey_recent_posts_widget_args_12345', function( $query_args ) {
$query_args['tag'] = 'pickup';
$query_args['posts_per_page'] = 3;
$query_args['orderby'] = 'rand';
return $query_args;
} );
PC とスマホでの出し分けについては、1列にするより消すほうが簡単なので、消すサンプルを。
/* PC では最後の1個を消す */
/* 下記の例だと Snow Monkey: 最近の投稿ウィジェット全部に反映されるので、特定のウィジェットにだけ適用したいなら id セレクタで指定したほうが良いかも */
@media (min-width: 64em) {
.snow-monkey-recent-posts .c-entries__item:last-child {
display: none;
}
}