วิธีซ่อนผลิตภัณฑ์ใน WooCommerce หรือซ่อนผลิตภัณฑ์ตามหมวดหมู่หรือบทบาท

เผยแพร่แล้ว: 2020-02-24

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

ซ่อนผลิตภัณฑ์ WooCommerce

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

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

ซ่อนผลิตภัณฑ์ WooCommerce โดยใช้ตัวเลือก

โดยค่าเริ่มต้น WooCommerce มาพร้อมกับตัวเลือกที่ยอดเยี่ยมที่อนุญาตให้ผู้ใช้ควบคุมการมองเห็นผลิตภัณฑ์

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

  1. เข้าสู่ระบบแดชบอร์ดไซต์ WordPress ของคุณ
  2. คลิกที่เมนูผลิตภัณฑ์ตามที่แสดงในภาพด้านล่าง เพื่อให้คุณเข้าถึงผลิตภัณฑ์ที่คุณต้องการซ่อนจากผู้ใช้โดยใช้ตัวเลือกการมองเห็น วิธีซ่อนสินค้าใน Woocommerce
  3. เลือกผลิตภัณฑ์จากรายการผลิตภัณฑ์ทั้งหมดที่คุณต้องการซ่อนตามที่แสดงด้านล่างและคลิกที่แก้ไขเพื่อเข้าสู่หน้าจอแก้ไขผลิตภัณฑ์: วิธีซ่อนสินค้าใน Woocommerce
  4. ในหน้าจอแก้ไขผลิตภัณฑ์ทางด้านขวาใต้เมตาบ็อกซ์เผยแพร่ด้านล่าง จะมีตัวเลือกชื่อ 'การมองเห็นแคตตาล็อก' คลิกที่ลิงก์นี้และรายการดรอปดาวน์พร้อมตัวเลือกจะปรากฏขึ้น และตัวเลือกสุดท้ายคือซ่อน
    เมื่อคุณเลือกตัวเลือกวิทยุนี้และคลิกตกลง จากนั้นอัปเดตโพสต์ สินค้าจะถูกซ่อนจากแค็ตตาล็อกร้านค้า ดังที่แสดงไว้ในสามขั้นตอนเหล่านี้ (1,2,3) : วิธีซ่อนสินค้าใน Woocommerce
  5. เมื่อคุณบันทึกตัวเลือกเหล่านี้และอัปเดตโพสต์ การเปิดเผยผลิตภัณฑ์จะถูกตั้งค่าเป็นซ่อนดังที่คุณเห็นในส่วนหน้าของร้านค้า: วิธีซ่อนสินค้าใน Woocommerce
  6. หากคุณตรวจสอบตัวเลือกการเปิดเผยแคตตาล็อกที่ส่วนหลังในหน้าจอแก้ไขผลิตภัณฑ์ คุณจะเห็นว่ามีการอัปเดตเป็นซ่อนเมื่อโพสต์ได้รับการอัปเดต: วิธีซ่อนสินค้าใน Woocommerce

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

Woocommerce ซ่อนผลิตภัณฑ์หมวดหมู่เฉพาะจากหน้าร้านค้า

หากคุณต้องการซ่อนสินค้าเฉพาะจากหน้าร้านค้าใน WooCommerce คุณสามารถดำเนินการได้โดยใช้เบ็ดการดำเนินการที่กำหนดเป้าหมายไปยังข้อความค้นหาของหน้าร้านค้า 'woocommerce_product_query'

ฟังก์ชันเรียกกลับควรใช้ $tax_query เพื่อจำกัดเงื่อนไขที่เกี่ยวข้องกับผลิตภัณฑ์ที่คุณต้องการซ่อน

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

สมมติว่าเราต้องการซ่อนผลิตภัณฑ์นี้จากหมวดหมู่ 'ชิ้นส่วนรถยนต์'

ซ่อนผลิตภัณฑ์ woocommerce

เราสามารถใช้ข้อมูลโค้ดต่อไปนี้ที่เพิ่มลงในไฟล์ functions.php เพื่อซ่อนผลิตภัณฑ์จากหน้าร้านค้า:

 /**
 * ซ่อนผลิตภัณฑ์ WooCommerce ตามหมวดหมู่จากหน้าร้านค้า
 *
 * @param $q
 */
 

add_action( 'woocommerce_product_query', 'njengah_hide_product_by_category_shop_page' ); 

ฟังก์ชั่น njengah_hide_product_by_category_shop_page ( $q ) {

    $tax_query = (อาร์เรย์) $q->get( 'tax_query' );

    $tax_query[] = อาร์เรย์ (
           'taxonomy' => 'product_cat',
           'field' => 'กระสุน',
           'terms' => array( 'uncategorised','auto-parts'), // ไม่แสดงสินค้าในหมวด 'auto parts' บนหน้าร้านค้า
           'ตัวดำเนินการ' => 'ไม่อยู่ใน'
    );


    $q->set( 'tax_query', $tax_query );

}

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

ซ่อนผลิตภัณฑ์ woocommerce

WooCommerce ซ่อนผลิตภัณฑ์เว้นแต่จะเข้าสู่ระบบ

อีกวิธีหนึ่งในการซ่อนผลิตภัณฑ์ใน WooCommerce เกี่ยวข้องกับการจำกัดการมองเห็นผลิตภัณฑ์ตามสถานะของผู้ใช้ไม่ว่าจะเข้าสู่ระบบหรือไม่ก็ตาม

ขั้นตอนแรกคือการตรวจสอบว่าผู้ใช้เข้าสู่ระบบอยู่หรือไม่ ฉันอธิบายโดยละเอียดที่นี่ – วิธีตรวจสอบว่าผู้ใช้เข้าสู่ระบบใน WordPress หรือไม่

เราจะใช้รหัสนี้เพื่อตรวจสอบสถานะการเข้าสู่ระบบ จากนั้นรวมกับแบบสอบถามเพื่อซ่อนผลิตภัณฑ์ WooCommerce ตามเงื่อนไขขึ้นอยู่กับสถานะการเข้าสู่ระบบของผู้ใช้

รหัสควรเป็นดังนี้:

 **
 * ซ่อนผลิตภัณฑ์ WooCommerce หากผู้ใช้ไม่ได้เข้าสู่ระบบ 
 *
 * @param $query
 */
 

ฟังก์ชั่น njengah_hide_product_if_user_not_logged ( $query ) {
	
	
    if ( $query->is_main_query() && is_woocommerce() && !is_user_logged_in() ) {
		
        $tax_query = อาร์เรย์ (
            อาร์เรย์ (
                    'taxonomy' => 'product_cat',
                    'field' => 'กระสุน',
                    'terms' => array( 'uncategorised','auto-parts'), // ไม่แสดงสินค้าในหมวด 'auto parts' บนหน้าร้านค้า
                    'operator'=> 'NOT IN' // ไม่รวม
                )
            );

        $query->set('tax_query', $tax_query);
    }
}

add_action( 'pre_get_posts', 'njengah_hide_product_if_user_not_logged' );

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

Woocommerce ซ่อนผลิตภัณฑ์ตามบทบาทผู้ใช้

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

 $ผู้ใช้ = wp_get_current_user(); // รับ & การตั้งค่าผู้ใช้ปัจจุบัน

        $roles = ( array ) $user->บทบาท; //รับบทบาท

        $roles[0] //บทบาทของผู้ใช้ปัจจุบัน

เราควรรวมรหัสนี้กับการกระทำ pre_get_posts ก่อนหน้า และรหัสที่จะซ่อนผลิตภัณฑ์สำหรับผู้ใช้ทุกคนคาดว่าผู้ดูแลระบบจะเป็นดังนี้:

 /**
 * ซ่อนผลิตภัณฑ์ WooCommerce ตามบทบาทของผู้ใช้เช่นในกรณีนี้ผู้ดูแลระบบเท่านั้นที่สามารถเห็นผลิตภัณฑ์นี้ 
 *
 * @param $query
 */


ฟังก์ชั่น njengah_hide_product_by_user_role ($query) {
	
	 $ผู้ใช้ = wp_get_current_user(); // รับ & การตั้งค่าผู้ใช้ปัจจุบัน 
	 $roles = ( array ) $user->บทบาท; //รับบทบาท 
	
	
    if ( $query->is_main_query() && is_woocommerce() && $roles[0] != 'administrator' ) {
		
        $tax_query = อาร์เรย์ (
            อาร์เรย์ (
                    'taxonomy' => 'product_cat',
                    'field' => 'กระสุน',
                    'terms' => array( 'uncategorised','auto-parts'), // ไม่แสดงสินค้าในหมวด 'auto parts' บนหน้าร้านค้า
                    'operator'=> 'NOT IN' // ไม่รวม
                )
            );

        $query->set('tax_query', $tax_query);
    }
}

add_action( 'pre_get_posts', 'njengah_hide_product_by_user_role' );

ดังที่คุณเห็นในโค้ดบรรทัดนี้ซึ่งเรากำลังตรวจสอบข้อความค้นหาแบบมีเงื่อนไข ฉันได้แนะนำเงื่อนไขเพื่อตรวจสอบว่าบทบาทของผู้ใช้ไม่ใช่ผู้ดูแลระบบ – $roles[0] != 'administrator' จากนั้นเราจะดำเนินการค้นหาต่อไป นี่คือวิธีที่คุณซ่อนผลิตภัณฑ์ WooCommerce ตามบทบาทของผู้ใช้

คุณสามารถอธิบายตัวอย่างนี้เพื่อให้เหมาะกับความต้องการเฉพาะของคุณ และคุณยังสามารถรวมกรณีเหล่านี้ทั้งหมดเพื่อสร้างวิธีหนึ่งที่มีเงื่อนไขในการซ่อนผลิตภัณฑ์ WooCommerce

ความคิดสุดท้าย

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