「snow_monkey_get_template_part_args」の検索結果

15件の結果を表示中 - 46 - 60件目 (全109件中)
  • 投稿者
    検索結果
  • #93147
    アバター画像キタジマ タカシ
    参加者
    2421

    My Snow Monkey プラグインか子テーマの functions.php に下記のコードを追加してみてください。

    add_filter(
    	'snow_monkey_get_template_part_args_template-parts/content/entry-meta',
    	function( $args ) {
    		// タームを格納する変数
    		$terms = [];
    
    		// 記事に関連したタクソノミーを取得
    		$taxonomies = get_object_taxonomies( get_post_type(), 'object' );
    
    		// それぞれのタクソノミーをもとに、記事に設定されたタームを取得
    		foreach ( $taxonomies as $taxonomy ) {
    			if ( ! $taxonomy->public ) {
    				continue;
    			}
    
    			// 記事に設定された、そのタクソノミーのタームを取得
    			$_terms = get_the_terms( get_the_ID(), $taxonomy->name );
    
    			// ターム用変数に格納
    			$terms = array_merge(
    				$terms,
    				is_array( $_terms ) ? $_terms : []
    			);
    		}
    		$args['vars']['_terms'] = $terms;
    		return $args;
    	}
    );
    1
    いいねをした人:
    #92999
    アバター画像キタジマ タカシ
    参加者
    2421

    実現できないことはないと思いますが、結構コードを書かないといけないので難易度は結構高いと思います。流れとしては次のような感じでしょうか。

    1. 記事編集画面に、任意の記事を4つまで選択できるカスタムフィールドを用意する
    2. カスタムフィールドで記事が選択されていればそれを、されていなければデフォルトのものを表示する
    3. 関連記事のクエリは snow_monkey_get_template_part_args_template-parts/content/related-posts フックで `$args[‘vars’][‘_posts_query’] を書き換えて実現する

    0
    いいねをした人: 居ません
    アバター画像キタジマ タカシ
    参加者
    2421

    v15.14.2 で機能を追加してみました。下記のコードで出る位置の設定やハンバーガーボタンの有無をカスタマイズできます。

    add_filter(
    	'snow_monkey_get_template_part_args_template-parts/nav/drawer',
    	function( $args ) {
    		$args['vars']['_inverse'] = true; // ドロワーを右から出す
    		$args['vars']['_display-hamburger-btn'] = true; // ドロワー内にハンバーガーボタンを表示
    		return $args;
    	}
    );
    1
    いいねをした人:
    #90449

    返信が含まれるトピック: *****

    *****
    [ プライベートトピックのため非表示 ]
    1
    いいねをした人:
    #84969
    アバター画像星乃 みなみ
    閲覧者
    36

    結果こうなりました。MTGで詰める予定
    本当にありがとうございます。なんとなく感覚がわかって来た
    あとはこの連想配列というか、多次元配列というかこの宣言の仕方に慣れるだけですね

    add_action(
    	'snow_monkey_get_template_part_args_templates/view/content',
    	function( $args ) {
    		// カスタム投稿タイプ information のとき(カスタマイザーでビューテンプレートを変更している場合は効きません)
    		if ( 'information' === $args['name'] ) {
    			// 投稿日を表示
    			$args['vars']['_display_entry_meta'] = true;
    			// 前後の記事を表示
    			$args['vars']['_display_entry_footer'] = true;
    			$args['vars']['_display_prev_next_nav'] = true;
    			// 関連記事を非表示
    			$args['vars']['_display_related_posts'] = false;
    		}
    		return $args;
    	}
    );
    
    add_action(
    	'snow_monkey_get_template_part_args_templates/view/content',
    	function( $args ) {
    		// カスタム投稿タイプ special のとき(カスタマイザーでビューテンプレートを変更している場合は効きません)
    		if ( 'special' === $args['name'] ) {
    			// 投稿日を表示
    			$args['vars']['_display_entry_meta'] = true;
    			// 前後の記事を表示
    			$args['vars']['_display_entry_footer'] = true;
    			$args['vars']['_display_prev_next_nav'] = true;
    			// 関連記事を非表示
    			$args['vars']['_display_related_posts'] = false;
    		}
    		return $args;
    	}
    );
    2
    いいねをした人:
    #84953
    アバター画像星乃 みなみ
    閲覧者
    36

    時間があいたので、投稿日(メタ)と前後のリンクだけ表示しようとしています

    投稿日、更新日、投稿者は表示されました(これらの個別編集をしたいところですがそれはのちほど)

    ページの前後が表示されません。 なにかたりない? のでしょうか

    add_action(
    	'snow_monkey_get_template_part_args_templates/view/content',
    	function( $args ) {
    		// カスタム投稿タイプ information のとき(カスタマイザーでビューテンプレートを変更している場合は効きません)
    		if ( 'information' === $args['name'] ) {
    			// 投稿日を表示
    			$args['vars']['_display_entry_meta'] = true;
    			// 前後の記事を表示
    			$args['vars']['_display_prev_next_nav'] = true;
    		}
    		return $args;
    	}
    );

    もしや1つづつかとおもったのですが、だめでした。

    これって、$args[‘vars’][‘hoge’] となってる多次元配列を
    検索してみつけたら上書きするという流れで認識間違えないでしょうか

    0
    いいねをした人: 居ません
    #84943
    アバター画像キタジマ タカシ
    参加者
    2421

    snow-monkey/templates/view/content.php をみてみてください。中に下記のコードがあると思います。

    $args = wp_parse_args(
    	// phpcs:disable VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable
    	$args,
    	// phpcs:enable
    	[
    		'_display_adsense'                     => false,
    		'_display_article_bottom_widget_area'  => false,
    		'_display_article_top_widget_area'     => false,
    		'_display_bottom_share_buttons'        => false,
    		'_display_contents_bottom_widget_area' => false,
    		'_display_comments'                    => true,
    		'_display_entry_footer'                => false,
    		'_display_entry_header'                => $display_entry_header,
    		'_display_eyecatch'                    => $display_eyecatch,
    		'_display_profile_box'                 => false,
    		'_display_tags'                        => false,
    		'_display_top_share_buttons'           => false,
    	]
    );

    「この記事を書いた人」だと $args['_display_profile_box'] で出すかどうかを管理しています。デフォルトは false なのでカスタム投稿タイプでは表示されません(投稿の場合は snow-monkey/templates/view/content-post.php が使用されますが、そちらでは true になっています)。

    そういう感じでこのパラメーターをよしなに書き換えることで、どのパーツを表示して表示させないかをカスタマイズできます。このパラメーターは snow_monkey_get_template_part_args_templates/view/content フックでカスタマイズできます。

    add_action(
    	'snow_monkey_get_template_part_args_templates/view/content',
    	function( $args ) {
    		// カスタム投稿タイプ news のとき(カスタマイザーでビューテンプレートを変更している場合は効きません)
    		if ( 'news' === $args['name'] ) {
    			// 「この記事を書いた人」を表示
    			$args['vars']['_display_profile_box'] = true;
    		}
    		return $args;
    	}
    );

    子テーマのように1枚のテンプレートを編集することも出来るのか等について教えて下さい

    できます。普通に子テーマをつくって、snow-monkey/templates/view/content-news.phpsnow-monkey/template-parts/content/entry/entry-news.php なんかをつくって HTML や PHP を記述すれば良いです。Snow Monkey も単なる WordPress テーマなので、他のテーマと同じく子テーマをつくってテンプレートの上書きは可能です。

    多分、投稿のテーマを読み込んでいるので、それを直接いじると
    投稿のテーマを読み込んでるモノ全部に影響がある可能性あり?

    もちろん影響しますが、それよりもテーマ(に限らずプラグインもコアも)のファイルを直接いじってはダメです。多分これも前コメントしたと思いますが、アップデートは最新のファイルをネット上からダウンロードしてきてサーバー内のファイルと置き換える行為なので、直接いじるとアップデートしたらその変更は消えていまします。

    1
    いいねをした人:
    #82000
    hosifuluko
    閲覧者
    13

    わー!ご解説いただきありがとうございます…m(__)m

    できました!!本当にありがとうございます><

    カスタム投稿が計2つあったのでこんな感じで書いてみました。

    add_filter(
    	'snow_monkey_get_template_part_args',
    	function( $args ) {
    		// 記事一覧カテゴリー以外のテンプレートの場合は無視
    		if ( 'template-parts/loop/entry-summary/term/term' !== $args['slug'] ) {
    			return $args;
    		}
    
    		// 投稿以外の場合は無視 ← ビューテンプレートを「投稿のビューテンプレート」にしていると、そのカスタム投稿も影響を受けます。つまり無視されません。
    		if ( 'post' !== $args['name'] ) {
    			return $args;
    		}
    
    		if ( 'news' === get_post_type() ) {
    			$args['vars']['_terms'] = get_the_terms( get_the_ID(), 'news_category' );
    		}
    
    		if ( 'article' === get_post_type() ) {
    			$args['vars']['_terms'] = get_the_terms( get_the_ID(), 'article_category' );
    		}
    
    		return $args;
    	}
    );

    ありがとうございました!!

    2
    いいねをした人:
    #81980
    アバター画像キタジマ タカシ
    参加者
    2421

    解説コメントを付け加えてみました。

    add_filter(
    	'snow_monkey_get_template_part_args',
    	function( $args ) {
    		// 記事一覧カテゴリー以外のテンプレートの場合は無視
    		if ( 'template-parts/loop/entry-summary/term/term' !== $args['slug'] ) {
    			return $args;
    		}
    
    		// 投稿以外の場合は無視 ← ビューテンプレートを「投稿のビューテンプレート」にしていると、そのカスタム投稿も影響を受けます。つまり無視されません。
    		if ( 'post' !== $args['name'] ) {
    			return $args;
    		}
    
    		// 全ての設定されたカテゴリーを返す ← ここで「投稿のビューテンプレート」なカスタム投稿タイプも「category」を取得しにいくためカテゴリーラベルの表示が消えます
    		$args['vars']['_terms'] = get_the_terms( get_the_ID(), 'category' );
    
    		return $args;
    	}
    );

    ということで、こんな感じでどうでしょうか?(適宜変更してみてください)

    add_filter(
    	'snow_monkey_get_template_part_args',
    	function( $args ) {
    		// 記事一覧カテゴリー以外のテンプレートの場合は無視
    		if ( 'template-parts/loop/entry-summary/term/term' !== $args['slug'] ) {
    			return $args;
    		}
    
    		if ( 'post' !== $args['name'] ) {
    			return $args;
    		}
    
    		// 投稿のときは全ての設定されたカテゴリーを返す
    		if ( 'post' === get_post_type() ) {
    			$args['vars']['_terms'] = get_the_terms( get_the_ID(), 'category' );
    		}
    
    		// news のときは news_category を返す
    
    		if ( 'news' === get_post_type() ) {
    			$args['vars']['_terms'] = get_the_terms( get_the_ID(), 'news_category' );
    		}
    
    		return $args;
    	}
    );
    1
    いいねをした人:
    #80922
    Olein_jp
    参加者
    566

    @キタジマタカシ氏

    上記のコード、上手く動かないような気がします。原因特定できていないですけど…

    僕の方では、ホームページ設定した固定ページに最近の投稿ブロックを配置して以下のようなコードで試してみました。過去の投稿を更新してみても並び順が変わらないので…なんでだろ…

    add_filter(
    	'snow_monkey_get_template_part_args_template-parts/widget/snow-monkey-posts',
    	function( $args ) {
    		if ( is_front_page() ) {
    			$args['vars']['_posts_query']->set( 'orderby', 'modified' );
    			return $args;
    		}
    		return $args;
    	}
    );
    0
    いいねをした人: 居ません
    #80800
    GONSY
    参加者
    841

    PaPa-Riderさん

    参考のご提示ありがとうございます。よくわかりました。
    適宜調整は必要かもしれませんが、こんな感じでいかがでしょうか?

    画像のキャプション欄に以下を挿入
    <i class="fas fa-camera-retro"></i>画像引用元:<a href="https://example.com/" target="_blank" rel="noreferrer noopener">PaPa-Riderブログ</a>
     
    my-snow-monkey.phpに以下を追加

    add_filter(
    	'snow_monkey_get_template_part_args_template-parts/common/page-header',
    	function( $args ) {
    		$args['vars']['_display_image_caption'] = true;
    		return $args;
    	}
    );

     
    アイキャッチの右下に引用元を表示する場合は、CSSを一部上書き

    .c-page-header__bgimage-caption {
    	text-align: right;
    }

    一度お試しくださいませ。

    0
    いいねをした人: 居ません
    アバター画像キタジマ タカシ
    参加者
    2421

    やるとすればフックでクエリを書き換える方法になります。下記サンプルです(動作未確認)。

    add_filter(
    	'snow_monkey_get_template_part_args_template-parts/widget/snow-monkey-posts',
    	function( $args ) {
    		// 任意のタクソノミーの投稿ブロック/任意のタクソノミーの投稿ウィジェットの場合
    		// 実際にはもうちょっと条件を足して絞り込んだほうが良いかも
    		if ( 'taxonomy' === $args['name'] ) {
    			$args['vars']['_posts_query']->set( 'post__in', [ 1, 2, 4 ] );
    		}
    		return $args;
    	}
    );

    個人的には、表示したい各投稿に共通する適当なタグをつけて、それを呼びだすのが一番簡単だと思います。

    1
    いいねをした人:
    #80609
    アバター画像キタジマ タカシ
    参加者
    2421

    僕も確認してみましたがちゃんと反映されているようでした。もし「記事一覧の表示順」というのが「トップページの記事の一覧」ということであれば、トップページでは最近の投稿ブロックを使用されているようなのでこのコードでは並び順は変更されません(is_main_query で分岐しているけど、最近の投稿ブロックはメインクエリーではないため)

    最近の投稿ブロックのクエリを書き換える場合は下記のような感じになります(すべての最近の投稿ウィジェット・最近の投稿ブロックに影響が出るので、実運用では適当に条件分岐させるのが良いと思います)。

    add_filter(
    	'snow_monkey_get_template_part_args_template-parts/widget/snow-monkey-posts',
    	function( $args ) {
    		$args['vars']['_posts_query']->set( 'orderby', 'modified' );
    		return $args;
    	}
    );
    0
    いいねをした人: 居ません
    アバター画像キタジマ タカシ
    参加者
    2421

    デフォルトではカテゴリーの移動制限は無効です。

    snow_monkey_get_template_part_args_template-parts/content/prev-next-nav フックで _in_same_termtrue にしてみてください。

    1
    いいねをした人:
    アバター画像キタジマ タカシ
    参加者
    2421

    ありがとうございます! 検証環境を整えてみました。

    rich-media を text に書き換えると表示も変わる

    これは $args['vars']['_entries_layout'] = 'text'; の部分は常に反映されないけど、$args['vars']['_entries_layout'] = 'rich-media'; は意図していない(= 'template-parts/archive/entry/search' === $args['slug'] であろうという想定のとき)も反映されてしまう、ということですかね?

    もしそうだった場合、カスタマイザー → デザイン → (question)アーカイブページ設定 → ビューテンプレートの設定が「投稿のビューテンプレート」になっていないでしょうか?「投稿のビューテンプレート」になっていると $args['name'] が投稿と同じ post になるので条件が意図したとおりに動かなくなります。

    「投稿のビューテンプレート」を使いたい場合は下記のようにするのが良いかなと思います。

    add_filter(
    	'snow_monkey_get_template_part_args_template-parts/archive/entry/search',
    	function( $args ) {
    		if ( 'news' === get_post_type() ) { // ← 投稿タイプの判定を get_post_type() でおこなう
    			$args['vars']['_entries_layout'] = 'text';
    		} else {
    			$args['vars']['_entries_layout'] = 'rich-media';
    		}
    		return $args;
    	}
    );
    1
    いいねをした人:
15件の結果を表示中 - 46 - 60件目 (全109件中)

ドキュメント

Snow Monkey の設定方法やマニュアルを掲載しています。

ドキュメント

フォーラム

Snow Monkey の使い方やカスタマイズについてのご質問・ご要望等はサポートフォーラムで行っています。サポートフォーラムは誰でも閲覧できますが、書き込みできるのは Snow Monkey 購入者のみとなります。

サポートフォーラム

よくあるご質問

Snow Monkey のサービスについて不明な点がある場合は、まずはよくあるご質問をご確認ください。

よくあるご質問

お問い合わせ

よくあるご質問を見ても解決しなかった場合、試用版の申請については問い合わせフォームからお願いいたします。

お問い合わせ

Snow Monkey は Gutenberg ブロックエディターに対応した 100%GPL の WordPress テーマです。拡張性を意識した開発をおこなっており、カスタマイザーとブロックでスピーディーにサイトを立ち上げるだけでなく、CSS やフックを駆使した高度なカスタマイズにも柔軟に対応できます。