現在WPを使ってHPを制作しており、
カスタムフィールドに入力した内容のうち、ある特定カテゴリの「子カテゴリのみの情報」を表示したいのですが、できずに困っております。
どうかご教授よろしくお願いできますでしょうか。
前提・実現したいこと
下記記事を参考に、カテゴリ編集画面に画像入力欄、テキスト入力欄を追加いたしました。
■参考記事
http://www.webopixel.net/wordpress/436.html
https://increment-log.com/category-text-display/
入力した画像とテキストをトップページに表示させることまではできたのですが、
表示させるカテゴリを以下の条件で絞り込みをさせる必要があり、行き詰まってしまいました。
表示条件
1.特定カテゴリの子カテゴリのみの情報をトップページに表示する 2.子カテゴリはクライアントが更新・追加して増えていく予定なので、追加した分も表示できるようにしておく必要があります
問題点
下記コードをWPテーマのindex.phpに追加すると、トップページに全てのカテゴリの画像とテキストが表示されてしまいます。
該当のソースコード
<?php $tag_all = get_terms("category", $args); foreach($tag_all as $value): $cat_data = get_option('cat_'.intval($value->term_id)); ?> <div class="image"><img src="<?php echo esc_html($cat_data['img']) ?>" width="230" height="140" alt=""></div> <div class="name"><?php echo esc_html($value->name) ?></div> <div class="text"><?php echo esc_html($cat_data['extra_text']) ?></div> <div class="details"><a href="親カテゴリスラッグ/<?php echo esc_html($value->slug) ?>/">詳細はこちら</a></div> <?php endforeach; ?>
補足情報
カテゴリページには、
category.phpに下記ソースを追加し希望通り、「特定カテゴリの子カテゴリのみ表示」させることができました。
(条件分岐を追加した以外は同じものになります)
補足情報(ソースコード)
<?php if(in_category( array( 1,2,3 ) )): ?> カテゴリ1~3の内容 <?php elseif(is_category( array( 4 ) )): ?> <?php $tag_all = get_terms("category", $args); foreach($tag_all as $value): $cat_data = get_option('cat_'.intval($value->term_id)); ?> <div class="image"><img src="<?php echo esc_html($cat_data['img']) ?>" width="230" height="140" alt=""></div> <div class="name"><?php echo esc_html($value->name) ?></div> <div class="text"><?php echo esc_html($cat_data['extra_text']) ?></div> <div class="details"><a href="親カテゴリスラッグ/<?php echo esc_html($value->slug) ?>/">詳細はこちら</a></div> </div> <?php endforeach; ?>
追記
特に$argsの中身というのは設定していません。
参考記事のコードをいろいろ試行錯誤していて
<?php $tag_all = get_terms("category", "fields=all"); foreach($tag_all as $value): $cat_data = get_option('cat_'.intval($value->term_id)); ?>
にある「fields=all」を「$args」に変えてみたところ、category.phpでは
「特定カテゴリの子カテゴリのみの情報を表示する」ことができたので、
正しい記述ではないのですが、つかっているという状態です。
さらにfunctions.phpにはこのように記載しております。
<?php } add_action ( 'edited_term', 'save_extra_category_fileds'); add_action ( 'create_term', 'save_extra_category_fileds'); function save_extra_category_fileds( $term_id ) { if ( isset( $_POST['Cat_meta'] ) ) { $t_id = $term_id; $cat_meta = get_option( "cat_$t_id"); $cat_keys = array_keys($_POST['Cat_meta']); foreach ($cat_keys as $key){ if (isset($_POST['Cat_meta'][$key])){ $cat_meta[$key] = $_POST['Cat_meta'][$key]; } } update_option( "cat_$t_id", $cat_meta ); } } add_action('admin_print_scripts', 'my_admin_scripts'); add_action('admin_print_styles', 'my_admin_styles'); function my_admin_scripts() { global $taxonomy; if( 'category' == $taxonomy ) { wp_enqueue_script('media-upload'); wp_enqueue_script('thickbox'); wp_register_script('my-upload', get_bloginfo('template_directory') .'/js/upload.js'); wp_enqueue_script('my-upload'); } } function my_admin_styles() { global $taxonomy; if( 'category' == $taxonomy ) { wp_enqueue_style('thickbox'); } }
回答1件
あなたの回答
tips
プレビュー