今回は小さなECサイトのWordPress+Welcart導入・設定ガイドのカスタマイズ後のテーマを利用しています。(category.phpを除く)
商品のカテゴリーページにサブカテゴリを表示する手順をご紹介します
まずサブカテゴリのサムネイルを追加させます
WORDPRESSのFUNCTIONに下記コードを追加します
// カテゴリーサムネイルフィールドを追加 function add_category_thumbnail_field($term) { $thumbnail_id = get_term_meta($term->term_id, 'category_thumbnail_id', true); ?> <tr class="form-field"> <th scope="row" valign="top"> <label for="category_thumbnail">カテゴリーサムネイル</label> </th> <td> <input type="hidden" id="category_thumbnail_id" name="category_thumbnail_id" value="<?php echo esc_attr($thumbnail_id); ?>" /> <div id="category-thumbnail-wrapper"> <?php if ($thumbnail_id) { echo wp_get_attachment_image($thumbnail_id, 'thumbnail'); } ?> </div> <p> <input type="button" class="button button-secondary" id="upload-category-thumbnail" value="サムネイルをアップロード" /> <input type="button" class="button button-secondary" id="remove-category-thumbnail" value="サムネイルを削除" /> </p> </td> </tr> <?php } add_action('category_edit_form_fields', 'add_category_thumbnail_field'); // カテゴリーサムネイルを保存 function save_category_thumbnail($term_id) { if (isset($_POST['category_thumbnail_id'])) { update_term_meta($term_id, 'category_thumbnail_id', intval($_POST['category_thumbnail_id'])); } } add_action('edited_category', 'save_category_thumbnail'); // サムネイルアップロードのスクリプトを追加 function category_thumbnail_script() { ?> <script> jQuery(document).ready(function($){ var frame; $('#upload-category-thumbnail').on('click', function(e) { e.preventDefault(); if (frame) { frame.open(); return; } frame = wp.media({ title: 'カテゴリーサムネイルを選択', button: { text: 'この画像を使用' }, multiple: false }); frame.on('select', function() { var attachment = frame.state().get('selection').first().toJSON(); $('#category_thumbnail_id').val(attachment.id); $('#category-thumbnail-wrapper').html('<img src="'+attachment.url+'" style="max-width:100%;"/>'); }); frame.open(); }); $('#remove-category-thumbnail').on('click', function() { $('#category_thumbnail_id').val(''); $('#category-thumbnail-wrapper').html(''); }); }); </script> <?php } add_action('admin_footer', 'category_thumbnail_script');
これでカテゴリサムネイルの画像が追加できました
それからcategory.phpにサブカテゴリタイトルとサブカテゴリのサムネイルを呼び出す
今回は次のカテゴリだけ表示させます。
<?php // 現在のカテゴリーIDを取得 $category_id = get_queried_object_id(); // 現在のカテゴリーの直下の子カテゴリーを取得 $categories = get_terms(array( 'taxonomy' => 'category', 'parent' => $category_id, 'hide_empty' => false, // 記事があるカテゴリーのみを表示したい場合は、trueに設定 )); // 直下の子カテゴリーがある場合、その名前とサムネイルを表示 if ($categories) : ?> <div class="sub-categories"> <div class="sub-category-list"> <?php foreach ($categories as $category) : ?> <div class="col-sm-3"> <a href="<?php echo get_category_link($category->term_id); ?>"> <!-- サムネイルをチェックして表示 --> <?php // カテゴリーのサムネイルIDを取得 $thumbnail_id = get_term_meta($category->term_id, 'category_thumbnail_id', true); // サムネイルIDが存在する場合、サムネイルを表示し、alt属性を追加 if ($thumbnail_id) { echo wp_get_attachment_image($thumbnail_id, 'thumbnail', false, array('alt' => esc_attr($category->name))); } ?> <!-- カテゴリー名は常に表示 --> <p class="button2"><?php echo esc_html($category->name); ?></p> </a> </div> <?php endforeach; ?> </div> </div> <?php endif; ?>
ユーザーコメント