วิธีการตั้งค่ารูปภาพเด่นทางเลือกตามหมวดหมู่โพสต์ใน WordPress


คุณกำลังมองหาวิธีตั้งค่าภาพขนาดย่อของโพสต์เริ่มต้นสำหรับหมวดหมู่ WordPress เฉพาะหรือไม่?

หากคุณมีบทความที่ไม่มีรูปภาพเด่น หรือหากคุณต้องการให้โพสต์ทั้งหมดในหมวดหมู่มีภาพขนาดย่อที่คล้ายกัน คุณสามารถตั้งค่ารูปภาพสำรองสำหรับแต่ละหมวดหมู่ได้ เพื่อไม่ให้โพสต์ในบล็อกถูกละเลย

ในบทความนี้ เราจะแสดงวิธีตั้งค่ารูปภาพเด่นทางเลือกเริ่มต้นสำหรับหมวดหมู่เฉพาะใน WordPress

เหตุใดจึงเพิ่มรูปภาพเด่นทางเลือกสำหรับหมวดหมู่โพสต์

สมมติว่าคุณมีบล็อก WordPress ที่คุณกำหนดหมวดหมู่เดียวให้กับแต่ละโพสต์ คุณสามารถกำหนดให้โพสต์ทั้งหมดในหมวดหมู่นั้นแสดงรูปภาพสำรองเดียวกันได้ หากไม่มีรูปภาพเด่นด้วยเหตุผลบางประการ

ข้อดีอีกประการหนึ่งของการเพิ่มรูปภาพทางเลือกสำหรับหมวดหมู่โพสต์ก็คือ หากหน้าเก็บหมวดหมู่ของคุณมีผู้ค้นหาจำนวนมาก ก็จะทำให้หน้าน่าสนใจและน่าดึงดูดยิ่งขึ้น

ที่กล่าวว่าเรามาดูกันว่าคุณสามารถเพิ่มรูปภาพสำรองตามหมวดหมู่โพสต์โดยใช้ปลั๊กอิน WordPress และโค้ดที่กำหนดเองได้อย่างไร

การตั้งค่ารูปภาพเด่นทางเลือกใน WordPress โดยใช้ปลั๊กอิน

ตามค่าเริ่มต้น WordPress ไม่มีตัวเลือกในการเพิ่มรูปภาพลงในหน้าหมวดหมู่โพสต์ของคุณ อย่างไรก็ตาม คุณสามารถตั้งค่ารูปภาพสำรองสำหรับหมวดหมู่โพสต์ได้อย่างง่ายดายโดยใช้ปลั๊กอิน WordPress

ขั้นแรก คุณจะต้องติดตั้งและเปิดใช้งานปลั๊กอินหมวดหมู่และอนุกรมวิธานรูปภาพ สำหรับรายละเอียดเพิ่มเติม โปรดดูคำแนะนำในการติดตั้งปลั๊กอิน WordPress

เมื่อเปิดใช้งาน คุณสามารถไปที่ การตั้งค่า » รูปภาพอนุกรมวิธาน จากแผงผู้ดูแลระบบ WordPress จากนั้น คุณสามารถคลิกช่องทำเครื่องหมาย "หมวดหมู่" เพื่อรวมรูปภาพอนุกรมวิธานในหมวดหมู่โพสต์ของคุณเป็นทางเลือกได้

อย่าลืมคลิกปุ่ม "บันทึกการเปลี่ยนแปลง" เมื่อดำเนินการเสร็จแล้ว

หลังจากนั้น คุณสามารถไปที่ โพสต์ » หมวดหมู่ จากแดชบอร์ด WordPress ของคุณ คุณจะเห็นช่อง "รูปภาพ" ปรากฏขึ้นเมื่อเพิ่มหมวดหมู่ใหม่หรือแก้ไขหมวดหมู่ที่มีอยู่

เพียงป้อน URL รูปภาพที่คุณต้องการเพิ่มลงในหมวดหมู่ WordPress ของคุณ หากต้องการรายละเอียดเพิ่มเติม โปรดดูคำแนะนำในการรับ URL ของรูปภาพที่คุณอัปโหลดใน WordPress

ตอนนี้ เมื่อคุณเผยแพร่โพสต์บนบล็อกโดยไม่มีการกำหนดรูปภาพเด่น WordPress จะใช้รูปภาพที่คุณเพิ่งกำหนดไว้สำหรับหมวดหมู่ของคุณ

นี่คือตัวอย่างภาพที่เราใช้บนไซต์สาธิตของคุณ

นั่นคือทั้งหมด! ตอนนี้คุณได้เพิ่มรูปภาพทางเลือกตามหมวดหมู่โพสต์เรียบร้อยแล้ว

การตั้งค่ารูปภาพเด่นทางเลือกใน WordPress โดยไม่ต้องใช้ปลั๊กอิน

คุณยังสามารถกำหนดค่ารูปภาพสำรองสำหรับหมวดหมู่โพสต์ได้โดยไม่ต้องใช้ปลั๊กอิน WordPress อย่างไรก็ตาม ไม่แนะนำวิธีนี้สำหรับผู้เริ่มต้นเนื่องจากต้องใช้ข้อมูลโค้ด

สิ่งแรกที่คุณต้องทำคือสร้างภาพสำหรับหมวดหมู่ WordPress ของคุณ ใช้ Category Slug เป็นชื่อไฟล์ภาพของคุณและบันทึกทั้งหมดในรูปแบบเดียวกัน เช่น JPG หรือ PNG

จากนั้น คุณสามารถอัปโหลดภาพหมวดหมู่ของคุณไปยังไซต์ WordPress ได้จาก สื่อ » เพิ่มใหม่

WordPress จะจัดเก็บภาพหมวดหมู่ของคุณในระหว่างการอัปโหลดและสร้างขนาดภาพที่กำหนดโดยธีมของคุณ

หลังจากอัพโหลดภาพหมวดหมู่แล้ว คุณจะต้องย้ายภาพเหล่านั้นไปยังไดเร็กทอรีอื่น เพียงเชื่อมต่อกับเว็บไซต์ของคุณโดยใช้ไคลเอนต์ FTP และไปที่โฟลเดอร์ /wp-content/uploads/

รูปภาพหมวดหมู่ที่คุณอัปโหลดจะถูกจัดเก็บไว้ในโฟลเดอร์เดือน เช่น /uploads/2022/08/

ไปข้างหน้าและเปิดโฟลเดอร์ของเดือนนี้

คุณสามารถดูคำแนะนำของเราเกี่ยวกับตำแหน่งที่ WordPress เก็บรูปภาพไว้บนเว็บไซต์ของคุณสำหรับข้อมูลเพิ่มเติม

จากนั้น สร้างโฟลเดอร์บนเดสก์ท็อปของคอมพิวเตอร์และตั้งชื่อเป็นหมวดหมู่-รูปภาพ ตอนนี้ให้ดาวน์โหลดภาพหมวดหมู่ทั้งหมดของคุณและทุกขนาดที่ WordPress สร้างขึ้นมาลงในโฟลเดอร์ใหม่นี้บนเดสก์ท็อปของคุณ

เมื่อการดาวน์โหลดเสร็จสิ้น คุณจะต้องอัปโหลดโฟลเดอร์ category-images ไปยังไดเร็กทอรี /wp-content/uploads ของคุณ การทำเช่นนี้จะทำให้คุณมีขนาดรูปภาพหมวดหมู่ทั้งหมดอยู่ในโฟลเดอร์แยกต่างหาก ซึ่งง่ายต่อการเรียกใช้ในธีมของคุณ

สำหรับรายละเอียดเพิ่มเติม โปรดดูคำแนะนำเกี่ยวกับวิธีใช้ FTP เพื่ออัปโหลดไฟล์ไปยัง WordPress

การแสดงภาพหมวดหมู่เป็นภาพเด่นทางเลือกเริ่มต้น

ต่อไป เราจะแสดงให้คุณเห็นถึงวิธีการแสดงภาพใดภาพหนึ่งเป็นภาพเด่นทางเลือก เมื่อโพสต์ในหมวดหมู่ไม่มีชุดใดชุดหนึ่ง

วิธีการนี้เกี่ยวข้องกับการคัดลอกและวางโค้ด และโดยปกติเราไม่แนะนำให้ผู้ใช้แก้ไขไฟล์ธีมของตน ข้อผิดพลาดเล็กๆ น้อยๆ อาจทำให้เกิดข้อผิดพลาดใหญ่ในไซต์ของคุณได้

วิธีที่ง่ายกว่าในการเพิ่มโค้ดลงในไซต์ของคุณคือการใช้ WPCode เป็นปลั๊กอินข้อมูลโค้ด WordPress ที่ดีที่สุดและช่วยให้คุณจัดการโค้ดที่กำหนดเองบนไซต์ของคุณได้

ขั้นแรก คุณจะต้องติดตั้งและเปิดใช้งานปลั๊กอิน WPCode ฟรี สำหรับรายละเอียดเพิ่มเติม โปรดดูคำแนะนำในการติดตั้งปลั๊กอิน WordPress

จากนั้น คุณสามารถไปที่ Code Snippets » + Add Snippet ในแผงควบคุม WordPress ของคุณเพื่อเพิ่ม Snippet ใหม่ จากนั้นเพียงคลิกที่ปุ่ม 'เพิ่มใหม่'

หลังจากนั้น คุณสามารถเพิ่มโค้ดที่กำหนดเองหรือใช้ข้อมูลโค้ดจากไลบรารี WPCode ได้

สำหรับสิ่งนี้ คุณจะต้องใช้โค้ดที่คุณกำหนดเอง ดังนั้นให้วางเมาส์เหนือตัวเลือก "เพิ่มโค้ดที่กำหนดเองของคุณ (ตัวอย่างข้อมูลใหม่)" แล้วคลิกตัวเลือก "ใช้ตัวอย่างข้อมูล"

ตอนนี้ให้เพิ่มชื่อสำหรับข้อมูลโค้ดของคุณและป้อนโค้ดในส่วน "ดูตัวอย่างโค้ด"

เนื่องจากโค้ดมี PHP ตรวจสอบให้แน่ใจว่าได้เลือก 'ประเภทโค้ด' เป็นตัวอย่าง PHP

เพียงคัดลอกข้อมูลโค้ดต่อไปนี้และวางลงในช่อง "ดูตัวอย่างโค้ด"

/**
 * Plugin Name: Category Thumbnail Fallback
 * Description: Use the category image as fallback when the post does not have a featured image
 */

class WPBCategoryThumbnailFallback
{
    protected static $taxonomies = ['category'];

    protected $nonceId = 'wpb_category_thumb_fallback_none';
    protected $fieldId = 'wpb_category_fallback_post_image';

    public $taxonomy;

    protected function __construct($taxonomy)
    {
        $this->taxonomy = $taxonomy;
    }

    public static function init()
    {
        foreach (static::$taxonomies as $taxonomy) {
            $_self = new self($taxonomy);

            add_action('admin_enqueue_scripts', [$_self, 'scripts']);

            add_action("{$taxonomy}_add_form_fields", [$_self, 'add']);
            add_action("{$taxonomy}_edit_form_fields", [$_self, 'edit'], 99, 2);

            add_action("created_{$taxonomy}", [$_self, 'saveTerm'], 10, 2);
            add_action("edited_{$taxonomy}", [$_self, 'editTerm'], 10, 2);

            add_filter("get_post_metadata", [$_self, 'fallback'], 99, 5);
        }
    }

    public function scripts($hook_suffix)
    {
        if (in_array($hook_suffix, ['term.php', 'edit-tags.php'])) {
            $screen = get_current_screen();

            if (is_object($screen) && "edit-{$this->taxonomy}" == $screen->id) {
                wp_enqueue_media();

                wp_add_inline_script('media-editor', $this->inlineScript());
            }
        }
    }

    public function add()
    {
        ?>
        <div class="form-field upload_image-wrap">
            <label for="upload_image">Image</label>
            <input id="upload_image" type="hidden" size="36" name="<?php
            echo esc_attr($this->fieldId)
            ?>" value=""/>
            <div id="wpb-category-image-preview" style="max-width: 150px; max-height: 150px;"></div>
            <input id="upload_image_button" class="button" type="button" value="Upload Image"/>
            <p>Enter a URL or upload an image</p>
        </div>
        <?php
        wp_nonce_field($this->nonceId, $this->nonceId);
    }

    public function edit($term, $taxonomy)
    {
        $value = get_term_meta($term->term_id, $this->fieldId, true);
        $image = wp_get_attachment_image((int)$value);
        ?>
        <tr class="form-field upload_image-wrap">
            <th scope="row"><label for="name">Image</label></th>
            <td>
                <label for="upload_image">
                    <input id="upload_image" type="hidden" size="36" name="<?php
                    echo esc_attr($this->fieldId)
                    ?>" value="<?php
                    echo esc_attr($value)
                    ?>"/>
                    <div id="wpb-category-image-preview" style="max-width: 150px; max-height: 150px;"><?php
                        echo $image;
                        ?></div>
                    <input id="upload_image_button" class="button" type="button" value="Upload Image"/>
                </label>
                <p class="description">Enter a URL or upload an image</p>
            </td>
        </tr>
        <?php
        wp_nonce_field($this->nonceId, $this->nonceId);
    }

    public function saveTerm($term_id, $tt_id)
    {
        $data = array_filter(wp_unslash($_POST), function ($value, $key) {
            return in_array($key, [$this->nonceId, $this->fieldId]);
        }, ARRAY_FILTER_USE_BOTH);

        if (
            empty($data) ||
            empty($data[$this->nonceId]) ||
            ! wp_verify_nonce($data[$this->nonceId], $this->nonceId) ||
            ! current_user_can('manage_categories')
        ) {
            return null;
        }

        if (empty($data[$this->fieldId]) || empty(absint($data[$this->fieldId]))) {
            return delete_term_meta($term_id, $this->fieldId);
        }

        $value = absint($data[$this->fieldId]);

        return update_term_meta($term_id, $this->fieldId, $value);
    }

    public function editTerm($term_id, $tt_id)
    {
        $this->saveTerm($term_id, $tt_id);
    }

    public function fallback($null, $object_id, $meta_key, $single, $meta_type)
    {
        if (
            $null === null &&
            $meta_key === '_thumbnail_id'
        ) {
            $meta_cache = wp_cache_get($object_id, $meta_type . '_meta');

            if ( ! $meta_cache) {
                $meta_cache = update_meta_cache($meta_type, [$object_id]);
                $meta_cache = $meta_cache[$object_id] ?? null;
            }

            $val = null;

            if (isset($meta_cache[$meta_key])) {
                if ($single) {
                    $val = maybe_unserialize($meta_cache[$meta_key][0]);
                } else {
                    $val = array_map('maybe_unserialize', $meta_cache[$meta_key]);
                }
            }

            if (empty($val)) {
                $fallbackImageId = $this->getPostFallbackImageId($object_id, $single);

                if ( ! empty($fallbackImageId)) {
                    return $fallbackImageId;
                }
            }

            return $val;
        }

        return $null;
    }

    public function getPostFallbackImageId($postId, $single)
    {
        $terms = get_the_terms($postId, $this->taxonomy);

        if (empty($terms) || is_wp_error($terms)) {
            return null;
        }

        foreach ($terms as $term) {
            $fallbackIdFromCategoryId = get_term_meta($term->term_id, $this->fieldId, $single);

            if ( ! empty($fallbackIdFromCategoryId)) {
                return $fallbackIdFromCategoryId;
            }
        }

        return null;
    }

    public function inlineScript()
    {
        return "jQuery(document).ready(function ($) {
            var custom_uploader;
            $('#upload_image_button').click(function (e) {
                e.preventDefault();
                //If the uploader object has already been created, reopen the dialog
                if (custom_uploader) {
                    custom_uploader.open();
                    return;
                }
                //Extend the wp.media object
                custom_uploader = wp.media.frames.file_frame = wp.media({
                    title: 'Choose Image',
                    button: {
                        text: 'Choose Image'
                    },
                    multiple: true
                });
                //When a file is selected, grab the URL and set it as the text field's value
                custom_uploader.on('select', function () {
                    console.log(custom_uploader.state().get('selection').toJSON());
                    attachment = custom_uploader.state().get('selection').first().toJSON();
                    
                    var thumbUrl = attachment && attachment.sizes && attachment.sizes.thumbnail && attachment.sizes.thumbnail.url
                    ? attachment.sizes.thumbnail.url
                    : attachment.url;
                    $('#wpb-category-image-preview').html('<img src=\"'+ thumbUrl +'\">');
                    $('#upload_image').val(attachment.id);
                });
                //Open the uploader dialog
                custom_uploader.open();
            });
        });";
    }
}

จากนั้น คุณสามารถเลื่อนลงไปที่ส่วน "การแทรก" และเลือก "การแทรกอัตโนมัติ" เพื่อให้ตำแหน่งการจัดการปลั๊กอินสำหรับคุณ

จากนั้นเลือกตัวเลือก "แทรกก่อนเนื้อหา" ใต้ส่วน "เพจ โพสต์ ประเภทโพสต์ที่กำหนดเอง" ในเมนูแบบเลื่อนลง "ตำแหน่ง"

จากนั้นคุณสามารถกลับไปที่ด้านบนของหน้าและสลับสลับจาก 'ไม่ใช้งาน' เป็น 'ใช้งานอยู่'

เมื่อคุณคลิกปุ่ม "บันทึกตัวอย่างข้อมูล" ที่ด้านบน รูปภาพสำรองของคุณจะอยู่ในตำแหน่งนั้น

คุณอาจต้องการดูคำแนะนำของเราเกี่ยวกับวิธีเพิ่มข้อมูลโค้ดที่กำหนดเองใน WordPress

หมายเหตุ: ข้อมูลโค้ดนี้จะใช้ได้กับอนุกรมวิธาน "หมวดหมู่" เท่านั้น อย่างไรก็ตาม คุณสามารถเพิ่มอนุกรมวิธานได้โดยการเพิ่มชื่อลงในรายการในคลาสต่อไปนี้ในโค้ด และเปลี่ยนคำในวงเล็บเป็น 'tag' หรือ 'post เป็นต้น

protected static $taxonomies = ['category'];

เมื่อเสร็จแล้ว เพียงไปที่เว็บไซต์ของคุณเพื่อดูรูปภาพสำรอง

เราหวังว่าบทความนี้จะช่วยคุณเพิ่มรูปภาพเด่นทางเลือกตามหมวดหมู่โพสต์ คุณสามารถดูคำแนะนำของเราเกี่ยวกับค่าใช้จ่ายในการสร้างเว็บไซต์และบริการการตลาดผ่านอีเมลที่ดีที่สุดสำหรับธุรกิจขนาดเล็กได้

หากคุณชอบบทความนี้ โปรดติดตามวิดีโอบทแนะนำช่อง YouTube สำหรับ WordPress ของเรา คุณยังพบกับเราได้บน Twitter และ Facebook