[ 解決済 ] VKBLOCKS投稿リスト「画像右上分類」と「分類(全項目)」で表示されるタームをカスタマイズしたい
[ 解決済 ] VKBLOCKS投稿リスト「画像右上分類」と「分類(全項目)」で表示されるタームをカスタマイズしたい
- このトピックには10件の返信、3人の参加者があり、最後にVektor,Incにより3年、 2ヶ月前に更新されました。
-
投稿者投稿
-
2021年9月9日 12:27 PM #55838
じょーじ参加者■ WordPress のバージョン
5.8■ テーマ・プラグインは全て最新版で確認してください。
確認しました。■ テーマの種類
Lightning ( G3 ) + Lightning G3 Pro Unit■ テーマのバージョン
14.8.2■ Pro Unit のバージョン
0.9.5■ スキンの種類
Origin III■ 関連しそうなプラグインを一つづつ停止して症状が改善するか確認してください。
確認しました。■ プラグインの種類・バージョン
VK Blocks Pro バージョン 1.14.1■ 期待する動作
「画像右上分類」は、特定のカスタムタクソノミーの子タームからのみ表示されるようにしたい。
「分類(全項目)」は、上に加えて、タクソノミーの表示順をカスタムしたい。■ 自分で試した事
vk_get_display_taxonomies_exclusionのフィルターを使い、特定のタクソノミーごと表示しないことはできた。■ 症状が発生するブラウザ
Chrome■ 実際の症状
「画像右上分類」は、作成が古いタクソノミーの親タームが表示される。
「分類(全項目)」は、作成が古いタクソノミー順に表示され、親・子すべてのタームが表示される。■ その他特記事項
Attachments:
You must be logged in to view attached files.2021年9月9日 2:43 PM #55844新規にカスタム投稿タイプを作る前提で考えましたので、既存のカスタム投稿タイプだと一部ご期待通りでないかもしれませんが、こんなやり方もできるということで紹介させていただきます。
「画像右上分類」は、特定のカスタムタクソノミーの子タームからのみ表示されるようにしたい。
VK All in One Expansion Unit のカスタム投稿タイプマネージャーを使う場合は1番目に指定したカスタム分類が「画像右上分類」に表示されます。
【添付画像】custom-post-type-1.png
「分類(全項目)」は、上に加えて、タクソノミーの表示順をカスタムしたい。
以下のような CSS を書いて表示順をコントロールできます。
.vk_post_taxonomies { display: flex; flex-direction: column; } .vk_post_taxonomy-area { order: 1; } .vk_post_taxonomy-industry { order: 2; } .vk_post_taxonomy-employees { order: 3; }
【添付画像】custom-post-type-2.png
Attachments:
You must be logged in to view attached files.2021年9月9日 4:48 PM #55850さっきの回答に補足します。
子タームからのみ表示されるように
すみません、このご質問の回答にはなっていませんでした。
とりあえず、表示順のコントロールのところだけご参考にどうぞ。
【追記】
子タームだけ表示するのってむずかしそうなので、エリア と 都道府県 を別々のタクソノミーに分けるのってダメでしょうか?- この返信は3年、 2ヶ月前に対馬 俊彦が編集しました。
2021年9月10日 12:23 PM #55872
Vektor,Incキーマスターしばらくお待ちください。
2021年9月10日 3:39 PM #55881
じょーじ参加者ご回答ありがとうございます。
CSSを使用するのは盲点でした。
CSSを使用して「分類(全項目)」の表示順をコントロール出来ました。子タームだけ表示するのってむずかしそうなので、エリア と 都道府県 を別々のタクソノミーに分けるのってダメでしょうか?
タクソノミー構造を変えない方法を探しております。
2021年9月10日 4:24 PM #558852021年9月10日 4:25 PM #55886
Vektor,Incキーマスターしばらくお待ちください。
2021年9月10日 5:23 PM #55891
Vektor,Incキーマスターたぶんこれでいけると思います。
by いしかわ
function my_vk_post_custom_term( $options, $post ){ if ( 'event' === get_post_type() ) { // 元の画像右上のカスタム分類名を非表示に. $options['display_image_overlay_term'] = false; // 画像右上に表示するカスタム分類 $options['body_append'] = my_get_vk_post_custom_single_term( $post ); } return $options; } add_filter( 'vk_post_options', 'my_vk_post_custom_term', 10, 2 ); /** * 投稿一覧画面で表示する投稿情報画像右上のカスタム分類 * * @param object $post : 1件分の投稿情報. */ function my_get_vk_post_custom_single_term( $post ) { // 表示したい投稿タイプを条件分岐で指定します. // ※その他必要に応じて $options や $post の中身を元に条件分岐を追加してください. if ( 'event' === $post->post_type ) { $args = array( 'class' => 'vk_post_imgOuter_singleTermLabel', // クラス名を追加する場合は指定. ); $outer_class = ' class="' . esc_attr( $args['class'] ) . '"'; $single_term_with_color = ''; // 表示対象に指定するカスタム分類名. $taxonomy = 'area'; // 投稿に紐付いているカスタム分類を取得. $terms = get_the_terms( $post->ID, $taxonomy ); $term_id = ''; foreach ( $terms as $key => $term ) { // 親のないタームの場合. if ( ! $term->parent ) { // 親のないタームタームを除外. unset( $terms[ $key ] ); } } // 配列キーのふりなおし. $terms = array_values( $terms ); if ( ! empty( $terms[0] ) ) { $term_name = esc_html( $terms[0]->name ); if ( method_exists( 'Vk_term_color', 'get_term_color' ) ) { $term_color = Vk_term_color::get_term_color( $terms[0]->term_id ); $term_color = ( $term_color ) ? ' style="color:#fff;background-color:' . $term_color . '"' : ''; $single_term_with_color .= '<span' . $outer_class . $term_color . '>'; $single_term_with_color .= $term_name; $single_term_with_color .= '</span>'; } } } return $single_term_with_color; }
2021年9月11日 11:26 PM #55934
Vektor,Incキーマスター追伸
対馬さんから指摘いただいたのですが
if ( 'event' === $post->post_type ) {
の部分は
if ( ‘event’ === get_post_type() ) {
の方が上手動作が安定するかもしれません。
※ event は制御対象にする投稿タイプ名です。
2021年9月13日 11:08 AM #55972
じょーじ参加者いしかわ 様
ご回答ありがとうございます。
「画像右上分類」を特定のタクソノミーの子タームから表示するように出来ました。コードは下記になります。投稿にタクソノミーが設定されていない場合を考慮してif文を追加しています。
function my_vk_post_custom_term($options, $post) { if (get_post_type() === 'company') { // 元の画像右上のカスタム分類名を非表示に. $options['display_image_overlay_term'] = false; // 画像右上に表示するカスタム分類 $options['body_append'] = my_get_vk_post_custom_single_term($post); } return $options; } add_filter('vk_post_options', 'my_vk_post_custom_term', 10, 2); /** * 投稿一覧画面で表示する投稿情報画像右上のカスタム分類. * * @param object $post : 1件分の投稿情報 */ function my_get_vk_post_custom_single_term($post) { // 表示したい投稿タイプを条件分岐で指定します. // ※その他必要に応じて $options や $post の中身を元に条件分岐を追加してください. if (get_post_type() === 'company') { $args = [ 'class' => 'vk_post_imgOuter_singleTermLabel', // クラス名を追加する場合は指定. ]; $outer_class = ' class="' . esc_attr($args['class']) . '"'; $single_term_with_color = ''; // 表示対象に指定するカスタム分類名. $taxonomy = 'area'; // 投稿に紐付いているカスタム分類を取得. $terms = get_the_terms($post->ID, $taxonomy); if ($terms) { foreach ($terms as $key => $term) { // 親タームの場合. if (!$term->parent) { // 親タームを除外. unset($terms[$key]); } } // 配列キーのふりなおし. $terms = array_values($terms); } if (!empty($terms[0])) { $term_name = esc_html($terms[0]->name); if (method_exists('Vk_term_color', 'get_term_color')) { $term_color = Vk_term_color::get_term_color($terms[0]->term_id); $term_color = ($term_color) ? ' style="color:#fff;background-color:' . $term_color . '"' : ''; $single_term_with_color .= '<span' . $outer_class . $term_color . '>'; $single_term_with_color .= $term_name; $single_term_with_color .= '</span>'; } } } return $single_term_with_color; }
2021年9月13日 11:25 AM #55973
Vektor,Incキーマスター投稿にタクソノミーが設定されていない場合を考慮してif文を追加しています。
たしかに元のコードだとエラーになってしまいますね。
共有ありがとうございます。 -
投稿者投稿
- このトピックに返信するにはログインが必要です。