$post_type ( เส้น) สิ่งที่คุณต้องการตั้งชื่อประเภทโพสต์ของคุณ ชื่อนี้จะถูกนำมาใช้ในพารามิเตอร์ของฟังก์ชันต่างๆ มากมายในอนาคต โปรดจำไว้เสมอ นอกจากนี้ คำต่อไปนี้ที่สงวนไว้โดย WordPress ไม่สามารถใช้เป็นชื่อได้:
- สิ่งที่แนบมา
- การแก้ไข
- nav_menu_item
- กำหนดเอง_css
- ปรับแต่ง_changeset
- การกระทำ
- คำสั่ง
- ธีม
- ผู้เขียน
ค่าเริ่มต้น: ค่าอาร์กิวเมนต์สาธารณะ ยกเว้น_จาก_ค้นหา( ตรรกะ)
- จริง — ยกเว้นบันทึกประเภทนี้จากผลการค้นหาบนไซต์
- เท็จ - อย่ายกเว้น
ค่าเริ่มต้น: ค่าตรงข้ามของพารามิเตอร์สาธารณะ show_in_nav_menus( ตรรกะ) ว่าควรมีองค์ประกอบของโพสต์ประเภทนี้เพื่อเพิ่มลงในเมนูของไซต์หรือไม่
ค่าเริ่มต้น: ค่าอาร์กิวเมนต์สาธารณะ show_ui( ตรรกะ) จำเป็นต้องเพิ่มอินเทอร์เฟซมาตรฐานในแผงผู้ดูแลระบบเพื่อแก้ไขและเพิ่มบันทึกประเภทนี้หรือไม่
ค่าเริ่มต้น: ค่าอาร์กิวเมนต์สาธารณะ
Show_in_menu ( ตรรกะ|เส้น) ว่าจำเป็นต้องเพิ่มรายการลงในเมนูผู้ดูแลระบบหรือไม่
ค่าเริ่มต้น: ค่าของอาร์กิวเมนต์ show_ui show_in_admin_bar ( ตรรกะ) จำเป็นต้องเพิ่มลิงก์เพื่อสร้างบันทึกประเภทนี้ใหม่ในแผงผู้ดูแลระบบหรือไม่
ค่าเริ่มต้น: ค่าของอาร์กิวเมนต์ show_in_menu เมนู_ตำแหน่ง( จำนวนเต็ม) ลำดับการจัดเรียงในเมนูในแผงผู้ดูแลระบบ
เมนู_ไอคอน( เส้น) URL ที่แน่นอนของไอคอนสำหรับเมนู ความละเอียดของภาพที่เหมาะสมที่สุดคือ 16x16 พิกเซลนอกจากนี้ WordPress 3.8 ยังนำเสนอชุดไอคอนในตัว - คุณสามารถใช้ไอคอนเหล่านี้ได้โดยการระบุชื่อเป็นค่าพารามิเตอร์ เช่น dashicons-cart
ตามค่าเริ่มต้น ไอคอนสำหรับโพสต์ปกติจะถูกนำมาใช้ ลบ_with_user( ตรรกะ) เมื่อลบผู้ใช้ในบล็อก รายการทุกประเภทที่เขาเผยแพร่ควรถูกลบโดยอัตโนมัติ
ค่าเริ่มต้น: เท็จ ลำดับชั้น ( ตรรกะ) ว่าโพสต์ประเภทนี้ควรมีลำดับชั้นหรือไม่
ค่าเริ่มต้น: เท็จ has_archive( ตรรกะ|เส้น) ว่าโพสต์ประเภทนี้ควรมีหน้าเก็บถาวรของตัวเองหรือไม่ คุณสามารถระบุช็อตคัทไปยังเพจอาร์ไคฟ์เป็นค่าพารามิเตอร์ได้
ค่าเริ่มต้น: เท็จ เขียนใหม่ ( อาร์เรย์|ตรรกะ) กำหนดกฎสำหรับลิงก์ถาวรใน URL หากคุณระบุ false เป็นค่าของพารามิเตอร์นี้ กฎสำหรับลิงก์ถาวรจะไม่ถูกสร้างขึ้น
ทาก ( เส้น) ป้ายกำกับที่ใช้สำหรับโพสต์ประเภทนี้ (ค่าเริ่มต้นคือชื่อของประเภทโพสต์) with_front ( ตรรกะ) ไม่ว่าจะเพิ่มค่า $wp_rewite->front ให้กับฟีดลิงก์ถาวร (ค่าเริ่มต้น - จริง) หรือไม่ ( ตรรกะ) จำเป็นต้องสร้างฟีด RSS สำหรับโพสต์ประเภทนี้หรือไม่ (โดยค่าเริ่มต้น - ค่าของพารามิเตอร์ has_archive) ( ตรรกะ) ควรอนุญาตให้มีการแบ่งหน้าในโพสต์ประเภทที่ลงทะเบียนโดยใช้แท็ก(ค่าเริ่มต้นเป็นจริง) รองรับ ( อาร์เรย์) รายการใดที่ต้องเพิ่มลงในเพจเพื่อแก้ไขบันทึกประเภทนี้
- title - ฟิลด์สำหรับป้อนชื่อเรื่องของโพสต์
- โปรแกรมแก้ไข - โปรแกรมแก้ไขข้อความ
- ข้อความที่ตัดตอนมา - เมตาบ็อกซ์ "คำพูด"
- ผู้เขียน — เมตาบ็อกซ์ “ผู้เขียน”
- ภาพขนาดย่อ - เมตาบ็อกซ์ "โพสต์ภาพขนาดย่อ" (นอกจากนี้ ธีมของคุณจะต้องรองรับ)
- ความคิดเห็น — เมตาบ็อกซ์ “ความคิดเห็น” (หากระบุ อนุญาตให้แสดงความคิดเห็นในโพสต์ประเภทที่ลงทะเบียนได้)
- trackbacks — metabox “ส่งลิงก์ย้อนกลับ”
- ฟิลด์ที่กำหนดเอง - เมตาบ็อกซ์ "ฟิลด์ที่กำหนดเอง" (ฟิลด์ที่กำหนดเองจะได้รับการสนับสนุนในทุกกรณี)
- การแก้ไข — เมตาบ็อกซ์ "การแก้ไข" (หากระบุ การแก้ไขโพสต์ประเภทนี้จะถูกสร้างขึ้นในฐานข้อมูล)
- page-attributes - เมตาบ็อกซ์ "คุณสมบัติของเพจ" ที่มีความสามารถในการเลือกองค์ประกอบหลักและตั้งค่าลำดับ menu_order
- โพสต์รูปแบบ - เมตาบ็อกซ์ "รูปแบบ" อ่านเพิ่มเติมเกี่ยวกับรูปแบบโพสต์ อนุกรมวิธาน ( อาร์เรย์) อาร์เรย์ของการจัดหมวดหมู่ เช่น category หรือ post_tag ที่จะใช้สำหรับโพสต์ประเภทนี้ คุณยังสามารถกำหนดอนุกรมวิธานโดยใช้ฟังก์ชันนี้ได้
ตัวอย่างการลงทะเบียนประเภทโพสต์
หากคุณไม่รู้ว่าจะแทรกโค้ดที่ไหน ให้วางโค้ดลงใน Functions.php ของธีมปัจจุบันของคุณ
add_action ( "init" , "true_register_products" ) ; // ใช้ฟังก์ชันเฉพาะภายใน init hook เท่านั้นฟังก์ชั่น true_register_products() ( $labels = array ( "name" => "Products" , "singular_name" => "Product" , // แผงผู้ดูแลระบบ เพิ่ม -> ฟังก์ชั่น"add_new" => "เพิ่มสินค้า" , "add_new_item" => "เพิ่มผลิตภัณฑ์ใหม่", // ชื่อแท็ก |
สร้างประเภทโพสต์ที่กำหนดเอง บทความด้วยหมวดหมู่ที่กำหนดเอง (Custom Taxonomy) หมวดบทความ.
ในกรณีของฉัน บันทึกมาตรฐานทั้งหมดคือผลิตภัณฑ์ ดังนั้นเราจะแสดงบทความผ่านบันทึกที่กำหนดเอง
ในไฟล์ฟังก์ชั่น Functions.php เราลงทะเบียนบทความประเภทโพสต์ที่กำหนดเอง:
ฟังก์ชัน wptp_create_post_type() ( $labels = array("name" => __("Articles"), "singular_name" => __("Articles"), "add_new" => __("บทความใหม่"), "add_new_item" => __("เพิ่มบทความใหม่"), "edit_item" => __("แก้ไขบทความ"), "new_item" => __("บทความใหม่"), "view_item" => __("ดูบทความ"), "search_items" => __("ค้นหาบทความ"), "not_found" => __("ไม่พบบทความ"), "not_found_in_trash" => __("ไม่พบบทความในถังขยะ"),); $args = array( "labels" => $labels, "has_archive" => true, "public" => true, "hierarchical" => false, "menu_position" => 5, "supports" => array("title", "editor" , "ข้อความที่ตัดตอนมา", "ฟิลด์ที่กำหนดเอง", "ภาพขนาดย่อ")); register_post_type("articles", $args); ) add_action("init", "wptp_create_post_type");
หากคุณต้องการให้หมวดหมู่มาตรฐานแสดงในโพสต์ที่กำหนดเอง ให้เชื่อมโยงหมวดหมู่เหล่านั้นกับอนุกรมวิธานหมวดหมู่:
"taxonomies" => array("หมวดหมู่"),
หากคุณสร้างการจัดหมวดหมู่ที่กำหนดเองสำหรับโพสต์ที่กำหนดเองด้วย คุณจะต้องเชื่อมโยงกับการจัดหมวดหมู่ที่สร้างขึ้น หากเราใช้ตัวอย่างด้านล่าง รายการเหล่านี้จะเป็น Articles_category
"taxonomies" => array("articles_category"),
จากนั้น สำหรับประเภทโพสต์บทความที่กำหนดเอง เราจะลงทะเบียนการจัดหมวดหมู่ 'หมวดหมู่บทความ' เพื่อให้โพสต์ที่แตกต่างกันสามารถอยู่ในหมวดหมู่ที่แตกต่างกันได้
ฟังก์ชัน wptp_register_taxonomy() ( register_taxonomy("articles_category", "articles", array("labels" => array("name" => "Article Categories", "singular_name" => "Article Category", "search_items" => " ค้นหาหมวดหมู่บทความ", "all_items" => "หมวดหมู่บทความทั้งหมด", "edit_item" => "แก้ไขหมวดหมู่บทความ", "update_item" => "อัปเดตหมวดหมู่บทความ", "add_new_item" => "เพิ่มหมวดหมู่บทความใหม่", "new_item_name" => "ชื่อหมวดหมู่บทความใหม่", "menu_name" => "หมวดหมู่บทความ",), "ลำดับชั้น" => true, "sort" => true, "args" => array("orderby" => "term_order"), "show_admin_column" => true)); ) add_action("init", "wptp_register_taxonomy");
สำหรับอนุกรมวิธานที่กำหนดเอง คุณสามารถเปลี่ยนทากให้สวยงามยิ่งขึ้นได้เพื่อไม่ให้ Articles_category แต่คุณต้องแน่ใจว่าไม่มีทากดังกล่าวในหน้าหรือโพสต์อื่นอีกต่อไป มิฉะนั้นจะเกิดปัญหา:
"เขียนใหม่" => array("slug" => "blog"),
เมื่อเปลี่ยนทากคุณต้องอัปเดตการตั้งค่า "ลิงก์ถาวร" ในแผงผู้ดูแลระบบ มิฉะนั้นคุณจะได้รับข้อผิดพลาด 404 แทนที่จะเป็นหน้าที่ต้องการ
สามารถดูตัวอย่างเพิ่มเติมได้ที่นี่ แต่มันช่วยจัดเรียงโค้ดทั้งหมดนี้ตามลำดับ ซึ่งฉันรู้สึกขอบคุณผู้เขียนมาก
ไฟล์ single.php มีหน้าที่รับผิดชอบในการปรากฏของโพสต์ที่กำหนดเอง แต่หากต้องการเปลี่ยนรูปลักษณ์ของโพสต์ที่กำหนดเอง คุณสามารถสร้างไฟล์ single-(post_type).php - ในกรณีของฉันมันจะเป็น single-articles.php ด้วย เนื้อหาของตัวเอง
ตอนนี้คุณต้องแสดงโพสต์ที่กำหนดเองบนเพจ ตามค่าเริ่มต้น ไฟล์ index.php มีหน้าที่ในการแสดงไฟล์เก็บถาวรของโพสต์ที่กำหนดเอง แต่คุณสามารถสร้างไฟล์ที่จะรับผิดชอบในการแสดงรายการที่กำหนดเองในอนุกรมวิธานของคุณได้
ตัวเลือกที่ 1 ถูกต้องที่สุด เราแสดงรายการในอนุกรมวิธานในลักษณะเดียวกับในหมวดหมู่ปกติ
เมื่อต้องการทำสิ่งนี้ ให้สร้างไฟล์อนุกรมวิธาน-(อนุกรมวิธาน).php - ในกรณีของฉัน มันจะเป็นอนุกรมวิธาน-articles_category.php และในนั้นเราจะแสดงวงจรปกติ เช่นเดียวกับรายการมาตรฐานในหมวดหมู่:
ในไฟล์ Tax-item.php เราแสดงข้อมูลที่เราต้องการจากแต่ละโพสต์ เช่น ชื่อเรื่อง ลิงก์ของโพสต์ ภาพขนาดย่อ และข้อความที่ตัดตอนมา
ในไฟล์ pagination.php เราจะแสดงการแบ่งหน้าในรูปแบบนี้
วงจรนี้ไม่สามารถเปลี่ยนแปลงได้ การแบ่งหน้าใช้งานได้ดี นี่คือตัวเลือกที่ดีที่สุดสำหรับการแสดงการจัดหมวดหมู่แบบกำหนดเอง
ตัวเลือกที่ 2 – หากไม่มีการจัดหมวดหมู่ที่กำหนดเอง คุณสามารถรับโพสต์ที่กำหนดเองทั้งหมดในรูปแบบของไฟล์เก็บถาวร
ในการดำเนินการนี้ ในเทมเพลต เราสร้างไฟล์ archive-(post_type).php - ในกรณีของฉัน มันจะเป็น archive-articles.php ซึ่งเช่นเดียวกับในอนุกรมวิธาน เราจะแสดงการวนซ้ำปกติเท่านั้น แทนที่จะเป็น ชื่ออนุกรมวิธานที่เราแสดงชื่อของประเภทการโพสต์ที่กำหนดเอง :
ด้วยตัวเลือกนี้ หากยังไม่ได้สร้างหน้าเก็บถาวรสำหรับโพสต์ที่กำหนดเอง คุณจะได้รับรายการโพสต์ที่กำหนดเองทั้งหมดโดยใช้ลิงก์โดยตรง BLOG_URL?post_type=(post_type) หรือในกรณีของฉัน http://site.com/ บทความ/ .
ตัวเลือกที่ 3 เพียงแสดงรายการบทความที่กำหนดเองทั้งหมดบนหน้าด้วยเทมเพลตที่กำหนด
"บทความ", "posts_per_page" => -1); $loop = WP_Query ใหม่($args); ในขณะที่ ($loop->have_posts()) : $loop->the_post(); get_template_part("รวม/รายการภาษี"); ท้ายที่สุด; ?>get_template_part("รวม/รายการภาษี"); – ในไฟล์ Tax-item.php ฉันแสดงเนื้อหาโพสต์ที่ฉันต้องการเพื่อแสดงโพสต์ภายในลูป (ชื่อเรื่อง รูปขนาดย่อ วันที่ ใบเสนอราคา ฯลฯ)
ตัวเลือกนี้จะแสดงบทความทั้งหมดบนหน้า โดยไม่คำนึงถึงการจัดหมวดหมู่ (หมวดหมู่)
และหากเราต้องการแสดงแต่ละหมวดหมู่แยกกันพร้อมข่าวสารของตัวเอง เราก็ใช้ตัวเลือกแรกที่อธิบายไว้ข้างต้น
ดังที่กล่าวไว้ หากคุณใช้ปลั๊กอิน Yoast SEO และใช้ breadcrumbs:
จากนั้น เมื่อคุณเลือกอนุกรมวิธาน “หมวดหมู่บทความ” ในการตั้งค่าปลั๊กอินใน “อนุกรมวิธานที่จะแสดงในเบรดครัมบ์สำหรับประเภทโพสต์” ในเบรดครัมบ์ คุณจะได้รับลิงก์ไปยังหมวดหมู่ที่เป็นเจ้าของข่าวสาร พร้อมด้วยตัวเลือกอื่นๆ สำหรับการแสดงโพสต์ที่กำหนดเอง สิ่งนี้ไม่สามารถทำได้
เกี่ยวกับประเภทโพสต์แบบกำหนดเองใน WordPress (CPT, ประเภทโพสต์แบบกำหนดเองใน WordPress), วิธีสร้างและกำหนดค่า, เพิ่มหมวดหมู่และแท็ก, วิธีสร้าง URL ที่ซ้อนกัน /ประเภทโพสต์/category/post หรือ http://example.com/post_type/ หมวดหมู่/ โพสต์/ .
นอกจากนี้ยังอธิบายวิธีขยายฟังก์ชันมาตรฐานของ WordPress ด้วยการสร้างโพสต์ประเภทใหม่ที่สามารถใช้เพื่อวัตถุประสงค์ต่างๆ เช่น การเพิ่มพอร์ตโฟลิโอของคุณเอง ดัชนีภาพยนตร์และเพลง แค็ตตาล็อกผลิตภัณฑ์ ปฏิทินกิจกรรม แม้กระทั่งสร้างผลงานเล็กๆ น้อยๆ ทางออนไลน์ของคุณเอง ร้านค้า (เพราะว่าใหญ่ ควรใช้โซลูชันสำเร็จรูปเช่น WooCommerce) หรือเครือข่ายโซเชียล และอื่นๆ อีกมากมายในจิตวิญญาณนี้
ขั้นแรก ข้อมูลทั่วไป จากนั้นข้อมูลเฉพาะเจาะจง
เกี่ยวกับโพสต์ใน WordPress: ตำแหน่งที่จัดเก็บไว้ในฐานข้อมูลและวิธีรับ
โพสต์ทั้งหมดใน WordPress ที่จะกล่าวถึงด้านล่างนี้ จะถูกจัดเก็บไว้ในตารางเดียว: wp_posts ข้อมูลเมตาของโพสต์ เช่น ข้อมูลจากเมตาบ็อกซ์ จะถูกจัดเก็บไว้ในตาราง wp_postmeta
ฉันจะยกตัวอย่างวิธีรับโพสต์ประเภท 10 โพสต์ (standard กระทู้ในแผงผู้ดูแลระบบ)
โดยทั่วไปแล้ว ไม่จำเป็นต้องขอข้อมูลเป็นการเฉพาะ ในเทมเพลตจะมีการติดตั้งไว้ล่วงหน้าแล้ว เช่น ใน single.php ข้อมูลบันทึกพร้อมสำหรับการประมวลผลแบบวนซ้ำแล้ว
If (have_posts()) ( while (have_posts()) ( the_post(); // ในที่นี้เราใช้ข้อมูลจากลูป เช่น the_title() ฯลฯ ) )
หากจำเป็นต้องได้รับข้อมูลที่ไหนสักแห่งนอกลูปหรือเทมเพลต ระบบจะใช้แบบสอบถาม WP_Query
$args = array("post_type" => "post", // ประเภทการโพสต์: หน้า, ไฟล์แนบ, ... "posts_per_page" => 10, // ครั้งละ 10 โพสต์); $p = get_posts($args); // ข้อมูลสามารถขยายเป็นวงได้ถ้า (!empty($p)) ( foreach ($p as $post) ( setup_postdata($post); ?> ">= the_title() ?>
สามารถรับข้อมูลได้โดยใช้แบบสอบถาม SQL:
Global$wpdb; $query = "SELECT * FROM ($wpdb -> โพสต์) โดยที่ post_type = "โพสต์" จำกัด 10"; $p = $wpdb -> get_results($แบบสอบถาม); ทางออก(print_r($p)); // $p ตอนนี้มีอาร์เรย์พร้อมข้อมูลการโพสต์
ทั้งสามวิธีข้างต้นจะให้ผลลัพธ์ที่เหมือนกัน
ประเภทโพสต์ที่กำหนดไว้ล่วงหน้าใน WordPress: โพสต์, หน้า, เอกสารแนบ, การแก้ไข, nav_menu_item
รายการหรือโพสต์ (โพสต์)
หน่วยที่ใช้มากที่สุดทุกประเภทที่อยู่ใน WordPress คือ โพสต์ (หรือที่เรียกว่าโพสต์) ใช้เป็นโพสต์บล็อกและอื่น ๆ มีการจัดหมวดหมู่ที่กำหนดไว้ล่วงหน้า 2 แบบ: ส่วนหัวหรือที่เรียกว่าหมวดหมู่ (หมวดหมู่) และแท็กหรือที่เรียกว่าแท็ก (post_tag)
การจัดหมวดหมู่ใช้ในการจัดเรียงและจัดระเบียบโพสต์
หมวดหมู่แตกต่างจากแท็กตรงที่มีโครงสร้างแบบต้นไม้ (สามารถซ้อนกันภายในกันและกันได้)
ป้ายกำกับเป็นหน่วยที่เป็นอิสระจากกัน และด้วยวิธีนี้จึงค่อนข้างคล้ายกับบันทึก
นอกจากนี้ ตามค่าเริ่มต้นแล้ว ฟีด RSS ของไซต์ WordPress จะถูกสร้างขึ้นจากรายการต่างๆ
ไฟล์เทมเพลตต่อไปนี้ใช้สำหรับเรคคอร์ด (ตามลำดับความสำคัญ):
- single-post.php
- single.php
- เอกพจน์.php
- ดัชนี.php
ไฟล์เทมเพลตจะถูกค้นหาจากบนลงล่างตามลำดับความสำคัญ หากพบไฟล์เทมเพลตในธีม ไฟล์นั้นจะถูกใช้และการค้นหาจะหยุดลง
หน้า
หน้าเหล่านี้ส่วนใหญ่จะใช้เป็นหน้าบริการ หน้า Landing Page หน้า Landing Page คอลเลกชันสารานุกรม และอื่นๆ ที่คล้ายคลึงกัน พวกเขามีลำดับชั้นเหมือนต้นไม้นั่นคือสามารถซ้อนกันได้ซึ่งจะปรากฏในที่อยู่ของหน้าสุดท้าย (ทางลัดหลักจะปรากฏในห่วงโซ่ URL) และในบทบาทนี้เป็นไปได้ที่จะ ให้ความสำคัญกับการเรียงลำดับ
หากต้องการสร้างหน้า Landing Page คุณสามารถทำได้สองวิธี:
สร้างเทมเพลตหน้าพิเศษ
ที่ใดที่หนึ่งในธีมในรูทหรือไดเร็กทอรีย่อย ให้สร้างไฟล์ที่มีชื่อที่กำหนดเองและนามสกุล php เช่น Landing.php ข้างในคุณสามารถวางเทมเพลตใดก็ได้ซึ่งอาจแตกต่างอย่างสิ้นเชิงจากหน้าอื่น ๆ บนเว็บไซต์ แต่สิ่งสำคัญคือต้องวางโค้ดนี้ไว้ที่จุดเริ่มต้นของไฟล์:
ชื่อเทมเพลตเป็นป้ายกำกับพิเศษที่บอก WordPress ว่าไฟล์นี้เป็นเทมเพลตพิเศษ
ตอนนี้ เมื่อสร้างและแก้ไขหน้าใด ๆ ให้ดูในบล็อกทางด้านขวาที่เรียกว่าคุณสมบัติของหน้า ในนั้นในส่วนเทมเพลต คุณสามารถเลือกหน้า Landing Page ที่ไม่ซ้ำใครของเราได้
สำหรับเพจ จะใช้ลำดับชั้นเทมเพลตต่อไปนี้ เช่นเดียวกับ Records ฉันระบุตามลำดับความสำคัญ:
- (เทมเพลต).php
- หน้า-(page_label).php
- หน้า-(page_ID)
- หน้า.php
- เอกพจน์.php
- ดัชนี.php
เอกสารแนบ เอกสารแนบ หรือเอกสารแนบ
ประเภทยูทิลิตี้ที่ออกแบบมาเพื่อจัดเก็บข้อมูลเกี่ยวกับไฟล์ (รูปภาพ เสียง วิดีโอและสิ่งที่คล้ายกัน) ที่ถูกอัพโหลดผ่านผู้อัพโหลดในตัวแก้ไข WordPress มาตรฐาน เมื่อแก้ไขโพสต์ เพจ หรือสิ่งที่คล้ายกัน: ขนาด น้ำหนัก คำอธิบาย โพสต์หรือเพจใด พวกเขาผูกพันกับอะไรแบบนั้น
คุณสามารถรับไฟล์แนบสำหรับการจัดการในภายหลังโดยใช้รหัสต่อไปนี้:
$args = array("post_type" => "attachment", // Post type: attachment "post_status" => "inherit", // ค่าเริ่มต้นคือ "publish" และด้วยเหตุนี้คุณจะไม่สามารถรับไฟล์แนบได้ ดังนั้นเราจึงระบุ สถานะไฟล์แนบพิเศษ " สืบทอด"); $p = get_posts($args); ทางออก(print_r($p)); // ที่เอาต์พุตเราจะมีอาร์เรย์พร้อมไฟล์แนบ
ลำดับชั้นของเทมเพลตสำหรับไฟล์แนบ:
- (ชนิด mime).php
- (ชนิดย่อย mime).php
- (ประเภท mime-ชนิดย่อย).php
- สิ่งที่แนบมา.php
- single.php
- เอกพจน์.php
- ดัชนี.php
การแก้ไข ฉบับร่าง หรือการแก้ไข
การแก้ไขหรือที่เรียกว่าการแก้ไขคือเวอร์ชันของโพสต์ฉบับร่างที่สร้างขึ้นโดยอัตโนมัติในขณะที่คุณกำลังเขียนบทความในแผงผู้ดูแลระบบ WordPress หรือบันทึกบทความโดยไม่ได้เผยแพร่จริง
ในระหว่างขั้นตอนการเขียน ตามค่าเริ่มต้น สำหรับแต่ละบทความ แบบร่างแต่ละเวอร์ชันจะถูกบันทึก คุณสามารถเปรียบเทียบสองเวอร์ชันที่แตกต่างกัน และคุณสามารถย้อนกลับไปยังเวอร์ชันที่คุณต้องการได้
การจัดเก็บบทความเดียวกันหลายๆ เวอร์ชันนั้นค่อนข้างแพงและมักจะไร้จุดหมาย (แม้ว่ามันอาจจะถูกต้องมากกว่าถ้าทิ้งทุกอย่างไว้เป็นค่าเริ่มต้น โดยทำการล้างการแก้ไขเก่าๆ เป็นประจำโดยใช้ปลั๊กอิน เช่น WP Optimize) ดังนั้นจำนวนเวอร์ชันการแก้ไขที่บันทึกไว้ สามารถเปลี่ยนได้ 2 ตัวเลือก:
- ใช้ตัวกรอง wp_revisions_to_keep
- ลงทะเบียนใน wp-config.php //ปิดการใช้งานการแก้ไขเป็นค่าต่ำสุดที่เป็นไปได้ กำหนด("WP_POST_REVISIONS", 0);
ค่าที่เป็นไปได้:
- จริงหรือ -1: บันทึกแบบร่างทุกเวอร์ชัน ตัวเลือกเริ่มต้น
- false หรือ 0: ปิดใช้งานการบันทึกแบบร่าง ยกเว้น 1 บันทึกอัตโนมัติ
- จำนวนเต็มมากกว่าศูนย์: จำนวนเวอร์ชันร่างที่ระบุจะถูกบันทึก + 1 บันทึกอัตโนมัติ เวอร์ชันเก่าที่ไม่พอดีกับหมายเลขที่ระบุจะถูกลบโดยอัตโนมัติ
รายการเมนูการนำทาง (nav_menu_item)
เมนูการนำทาง (nav_menu_item) เป็นประเภทโพสต์ที่เก็บข้อมูลเกี่ยวกับรายการการนำทางใน WordPress เรกคอร์ดประเภทแรกและประเภทเดียวที่ไม่ได้ใช้เหมือนกับเรกคอร์ดประเภทอื่น ข้อมูลสำหรับการดำเนินการและการแสดงบนไซต์จะได้รับฟังก์ชันแยกต่างหากของตัวเอง
นอกจากนี้ เมนูการนำทางจะไม่เปิดใช้งานตามค่าเริ่มต้น หากต้องการเปิดใช้งาน คุณต้องประกาศการสนับสนุนใน:
- เขียน add_theme_support("menus");
- หรือลงทะเบียนพื้นที่เมนูโดยใช้ register_nav_menu() จากนั้นการสนับสนุนเมนูจะถูกเปิดใช้งานโดยอัตโนมัติ
ใช้ wp_nav_menu() เพื่อรับข้อมูลเนื่องจาก WP_Query จะไม่ทำงานและนั่นคือคุณสมบัติของประเภทโพสต์ nav_menu_item
// รหัสนี้จะใช้งานได้ wp_nav_menu(); // แสดงเมนูที่ไม่ว่างเปล่าแรกที่ลงทะเบียนไว้ // แต่โค้ดด้านล่างนี้ใช้ไม่ได้ $args = array("post_type" => "nav_menu_item", // Post type: page, attachment, ...); $p = get_posts($args); ทางออก(print_r($p)); // ผลลัพธ์จะเป็นอาร์เรย์ว่าง
ประเภทโพสต์ที่กำหนดเอง (CPT WordPress)
ตอนนี้เรามาถึงสิ่งสำคัญแล้ว - เครื่องมือที่ช่วยให้คุณขยายฟังก์ชันการเขียนบล็อก WordPress มาตรฐานไปสู่ความเป็นไปได้ไม่รู้จบ: ประเภทโพสต์แบบกำหนดเองที่กำหนดเอง
ตัวอย่างที่ง่ายที่สุดของวิธีการลงทะเบียนโพสต์ประเภทใหม่ sheensay_product ของเรา
Add_action("init", "sheensay_post_type"); ฟังก์ชั่น sheensay_post_type() ( register_post_type("sheensay_product", array("labels" => array("name" => "Products", "singular_name" => "Products",), "public" => true, // type บันทึกเปิดสำหรับการค้นหาและเช่น "has_archive" => true, // เปิดใช้งานหน้าเก็บถาวร "supports" => array("title", "editor", "thumbnail", "comments"), // เปิดใช้งานการสนับสนุนสำหรับ ชื่อเรื่อง, ผู้แก้ไข, ภาพขนาดย่อ, ความคิดเห็น)); )
ที่นี่ sheensay_product คือชื่อของประเภทโพสต์ใหม่ ไม่ควรขัดแย้งกับผู้อื่นในระบบ ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ด้านล่าง
นอกจากนี้ ในรูปลักษณ์นี้ ยังทำหน้าที่เป็นทางลัดไปยังโพสต์ประเภทนี้ กล่าวคือ มีอยู่ใน URL หากคุณต้องการระบุทางลัดอื่น เป็นต้น สินค้าให้ทำตามตัวอย่างด้านล่าง
Add_action("init", "sheensay_post_type"); ฟังก์ชั่น sheensay_post_type() ( register_post_type("sheensay_product", array("labels" => array("name" => "Products", "singular_name" => "Products",), "public" => true, "rewrite" => array("slug" => "products"), // ป้ายกำกับ ประเภทโพสต์ที่กำหนดเอง "has_archive" => true, "supports" => array("title", "editor", "thumbnail"),) ) ; )
วิธีเลือกชื่อที่เหมาะสมสำหรับโพสต์ประเภทใหม่
ชื่อต่อไปนี้สงวนไว้ใน WordPress และไม่สามารถใช้เป็นชื่อของประเภทโพสต์ใหม่ได้:
- สิ่งที่แนบมา
- การแก้ไข
- nav_menu_item
- การกระทำ
- ธีม
- คำสั่ง
นอกจากนี้ คุณควรหลีกเลี่ยงการใช้คำนำหน้า wp_ ที่จุดเริ่มต้นของชื่อ เนื่องจากอาจทำให้เกิดความขัดแย้งกับคอร์ WordPress เวอร์ชันในอนาคต
จะเป็นการดีที่สุดหากคุณใส่คำนำหน้าชื่อด้วยคำนำหน้าที่เกี่ยวข้องกับชื่อไซต์ ผลิตภัณฑ์ หรือแบรนด์ของคุณ เช่น sheensay_product รับประกันว่าคุณจะหลีกเลี่ยงความขัดแย้งที่อาจเกิดขึ้นได้
วิธีสร้างอนุกรมวิธานแบบกำหนดเอง
ประเภทโพสต์ที่กำหนดเองสามารถใช้การจัดหมวดหมู่จากโพสต์ เช่น หมวดหมู่ (หมวดหมู่) หรือแท็ก (แท็ก) แต่คุณสามารถมีการจัดหมวดหมู่ของคุณเองได้
Add_action("init", "sheensay_post_type"); ฟังก์ชั่น sheensay_post_type() ( // ลงทะเบียนอนุกรมวิธาน register_taxonomy("sheensay_product_type", "sheensay_product", array("label" => "Types", "hierarchical" => true, // หากเป็น TRUE อนุกรมวิธานจะคล้ายคลึงกับส่วนหัว (หมวดหมู่) หากเป็น FALSE (ค่าเริ่มต้น) อนุกรมวิธานจะกลายเป็นอะนาล็อกของป้ายกำกับ (แท็ก): "rewrite" => array("slug" => "product-type"),)); // ลงทะเบียนแบบกำหนดเอง ประเภทโพสต์ (ประเภทโพสต์แบบกำหนดเอง) register_post_type ("sheensay_product", array("labels" => array("name" => "Products", "singular_name" => "Products",), "public" => true, " เขียนใหม่" => array("slug " => "products"), // ป้ายกำกับ CPT ถูกกำหนดไว้ที่นี่ "has_archive" => true, "supports" => array("title", "editor", "thumbnail") , // เปิดใช้งานการสนับสนุนสำหรับชื่อเรื่อง, เครื่องมือแก้ไข, ภาพขนาดย่อ )); )
เทมเพลตสำหรับประเภทโพสต์ที่กำหนดเอง
ทุกอย่างขึ้นอยู่กับประเภทของข้อมูลที่แสดง อาจมี 3 ตัวเลือก: เทมเพลตโพสต์เฉพาะ เทมเพลตการเก็บถาวรโพสต์ และเทมเพลตอนุกรมวิธาน
เทมเพลตหน้าโพสต์
เรียงตามลำดับความสำคัญ
- เดี่ยว-(post_type).php
- single.php
- ดัชนี.php
โพสต์เทมเพลตการเก็บถาวร
- ไฟล์เก็บถาวร-(post_type).php
- ไฟล์เก็บถาวร.php
- ดัชนี.php
เทมเพลตอนุกรมวิธานแบบกำหนดเอง
- อนุกรมวิธาน-(taxonomy_name)-(term_name).php
- อนุกรมวิธาน-(taxonomy_name).php
- Taxonomy.php
- ไฟล์เก็บถาวร.php
- ดัชนี.php
ที่นี่ Taxonomy_name คือ sheensay_product_type และ term_name คือป้ายกำกับของอนุกรมวิธานที่คุณจะสร้างในแผงผู้ดูแลระบบ
วิธีรับข้อมูลประเภทโพสต์แบบกำหนดเอง (Custom Post Type WordPress) และแสดงบนเว็บไซต์
คุณสามารถรับข้อมูลประเภทโพสต์ที่กำหนดเองใน WordPress เพื่อแสดงบนเว็บไซต์ของคุณโดยใช้วิธีการเดียวกันกับโพสต์และเพจทั่วไป
$args = array("post_type" => "sheensay_product", // ระบุประเภทโพสต์ใหม่ของเรา "posts_per_page" => 10,); $p = get_posts($args); foreach ($p เป็น $post) ( setup_postdata($post); ?> ">= the_title() ?>
หากเราพูดถึงคำขอหลักซึ่งมีการโหลดข้อมูลไว้ล่วงหน้าเพื่อแสดงบนหน้าหลักหรือหน้าเก็บถาวรมาตรฐาน ประเภทโพสต์ที่กำหนดเองจะถูกปิดใช้งานที่นั่น
ดังนั้น หากคุณต้องการให้ประเภทโพสต์ที่สร้างขึ้นปรากฏบนหน้าเก็บถาวรพร้อมกับโพสต์ทั่วไป คุณต้องเปลี่ยนตัวกรองการโหลดโพสต์ล่วงหน้า
// เชื่อมต่อ "sheensay_product" ของเรากับ "โพสต์" และ "เพจ" มาตรฐาน add_action("pre_get_posts", "add_sheensay_product_in_main_query"); ฟังก์ชั่น add_sheensay_product_in_main_query($query) ( if (is_archive() && $query -> is_main_query()) $query -> set("post_type", array("post", "page", "sheensay_product")); return $query ; )
คลาสสำเร็จรูปสำหรับการสร้างประเภทโพสต์แบบกำหนดเองพร้อมอนุกรมวิธานแบบกำหนดเอง
ด้านล่างนี้เป็นคลาสที่คุณสามารถลงทะเบียนประเภทโพสต์ที่กำหนดเองด้วยอนุกรมวิธานของตัวเองได้ และ URL จะมีลักษณะเช่นนี้
http://example.com/products/type/product
เพื่อให้ URL ถูกสร้างขึ้น คุณต้องไปที่การตั้งค่าลิงก์ถาวร /wp-admin/options-permalink.php และตั้งค่าการตั้งค่าทั่วไปประเภทใดก็ได้นอกเหนือจากแบบธรรมดา
ด้านล่างนี้คือรหัสชั้นเรียน คุณไม่จำเป็นต้องทำการเปลี่ยนแปลงใดๆ แต่คุณสามารถเปลี่ยนป้ายกำกับประเภทโพสต์ที่ส่วนท้ายสุดของบรรทัด new Sheensay_Product("products");
รหัสนั้นเขียนอยู่ในหรือใน. ควรใช้ตัวเลือกแรกเนื่องจากในกรณีนี้ คุณจะไม่สูญเสียการเข้าถึงเนื้อหาของโพสต์ประเภทใหม่เมื่อเปลี่ยนธีมที่ใช้งานอยู่
?p=1713 * */ final class Sheensay_Product { // Ярлык произвольного типа записи по умолчанию private $post_type = "продукция"; function __construct($post_type = "") { // Переопределяем значение ярлыка по умолчанию if ($post_type) $this -> post_type = $post_type; /* * ลงทะเบียนประเภทโพสต์แบบกำหนดเอง */ add_action("init", array($this, "sheensay_cpt_product")); /* * กรอง URL */ add_filter("post_type_link", array($this, "product_permalink_structure"), 10, 2); /* * เพื่อให้การแบ่งหน้าใช้งานได้ */ add_action("generate_rewrite_rules", array($this, "fix_product_category_pagination")); ) ฟังก์ชั่น sheensay_cpt_product() ( /* * ลงทะเบียนอนุกรมวิธานที่กำหนดเองสำหรับประเภทโพสต์ใหม่ */ register_taxonomy("sheensay_product_type", "sheensay_product", array("label" => "Types", "hierarchical" => true, "query_var) " = > true, "rewrite" => array("slug" => $this -> post_type),)); /* * ลงทะเบียนประเภทโพสต์ใหม่ */ $labels = array("name" => "Products" , // ชื่อหลัก "singular_name" => "ผลิตภัณฑ์", // เพิ่ม "add_new" => "เพิ่มใหม่", // ชื่อของลิงก์ไปยังรายการใหม่ในแถบด้านข้าง "add_new_item" => "เพิ่มผลิตภัณฑ์ใหม่" , // ชื่อในตัวแก้ไขเมื่อเพิ่มรายการใหม่); $args = array("labels" => $labels, "public" => true, "publicly_queryable" => true, "show_ui" => true, "query_var " => true, "capability_type" = > "post", "hierarchical" => false, "menu_position" => null, "supports" => array("title", "editor", "thumbnail", "excerpt" ), "เขียนใหม่" => array( "slug" => $this -> post_type . "/%sheensay_product_type%", "with_front" => false,), "has_archive" => $this -> post_type,); register_post_type("sheensay_product", $args); if (current_user_can("manage_options")) // ระวังฟังก์ชันนี้ด้วย จะรีเซ็ตกฎการตรวจจับ URL ทั้งหมด จะดีกว่าถ้าแสดงความคิดเห็นหลังจากงานทั้งหมดเสร็จสิ้นแล้ว flush_rewrite_rules(); ) ฟังก์ชั่น product_permalink_structure($post_link, $post) ( if (FALSE !== strpos($post_link, "%sheensay_product_type%")) ( $product_type_term = get_the_terms($post -> ID, "sheensay_product_type"); if (!empty ($product_type_term)) $post_link = str_replace("%sheensay_product_type%", $product_type_term -> slug, $post_link); ) return $post_link; ) ฟังก์ชั่น fix_product_category_pagination($wp_rewrite) ( unset($wp_rewrite -> กฎ[ $this - > post_type . "/([^/]+)/page/?((1,))/?$"]); $wp_rewrite -> กฎ = array($this -> post_type . "/?$" => $wp_rewrite -> ดัชนี . "?post_type=sheensay_product", $this -> post_type . "/page/?((1,))/?$" => $wp_rewrite -> ดัชนี . "?post_type=sheensay_product&paged=" . $wp_rewrite -> preg_index(1), $this -> post_type. "/([^/]+)/page/?((1,))/?$" => $wp_rewrite -> ดัชนี "?sheensay_product_type= ". $wp_rewrite -> preg_index(1) . "&เพจ" . $wp_rewrite -> preg_index(2),) + $wp_rewrite -> กฎ; ) ) /* * รันคลาส * ในวงเล็บคุณสามารถกำหนดชื่อของป้ายกำกับประเภทโพสต์ */ new Sheensay_Product("products");
ขณะนี้ในแผงผู้ดูแลระบบ คุณสามารถลงทะเบียนผลิตภัณฑ์ใหม่และประเภทของผลิตภัณฑ์ได้
ก! ระบบการจัดการเนื้อหา เวิร์ดเพรสได้รับการยอมรับเป็นเวลาหลายปี แต่ความก้าวหน้าที่แท้จริงคือการนำความสามารถในการแยกบันทึกออกเป็นประเภทต่างๆ ในบทนี้ เราจะมาดูรายละเอียดเกี่ยวกับประเภทโพสต์ที่กำหนดเอง การสร้าง และการใช้งาน
ประวัติเล็กน้อย
ในทางปฏิบัติ ประเภทโพสต์ที่กำหนดเองปรากฏขึ้นเมื่อนานมาแล้ว และแม่นยำยิ่งขึ้นตั้งแต่วันที่ 17 กุมภาพันธ์ 2548 เมื่อ เวิร์ดเพรส 1.5เพิ่มการรองรับประเภทที่กำหนดเองสำหรับเพจแบบคงที่ผ่านฟิลด์ post_type ในฐานข้อมูล ฟังก์ชัน Wp_insert_post() มีมาตั้งแต่นั้นเป็นต้นมา เวิร์ดเพรส 1.0ดังนั้นเมื่อมีการใช้ฟิลด์ post_type ใน 1.5 จึงค่อนข้างง่ายที่จะเติมข้อมูลโดยใช้ฟังก์ชันนี้
และเฉพาะในเวอร์ชัน 2.8 เท่านั้นที่ฟังก์ชัน register_post_type() สำหรับการสร้างประเภทที่กำหนดเองปรากฏขึ้นและสิ่งที่มีประโยชน์อื่น ๆ มีให้ใช้งานใน "nightly builds" และตั้งแต่ 2.9 ฟังก์ชันก็พร้อมใช้งานสำหรับทุกคนแล้ว
อะไรตอนนี้!
ประเภทโพสต์ที่กำหนดเองไม่มีอะไรมากไปกว่าโพสต์ (บทความ) ปกติที่มีค่าฟิลด์ post_type เฉพาะในฐานข้อมูล ในโพสต์ทั่วไป ฟิลด์ post_type จะมีค่า โพสต์, หน้ามีความสำคัญ หน้าหนังสือและอื่น ๆ อย่างไรก็ตาม ขณะนี้เราสามารถสร้างประเภทของเราเองเพื่อระบุเนื้อหาเฉพาะที่มีอยู่ในโพสต์ได้ คุณสามารถสร้างประเภทโพสต์แบบกำหนดเองสำหรับหนังสือ ภาพยนตร์ เรื่องตลก ผลิตภัณฑ์ และอื่นๆ ได้
หากทำอย่างถูกต้อง คุณสามารถบรรลุผลลัพธ์ต่อไปนี้ได้โดยใช้โค้ดเพียงไม่กี่บรรทัด:
- วางประเภทที่กำหนดเองบนแผงหลักของพื้นที่ผู้ดูแลระบบด้วยรายการเมนูย่อย: รายการของรายการทั้งหมดที่มีประเภทนี้และสร้างรายการใหม่ด้วยประเภทนี้
- สร้างที่เก็บถาวรของโพสต์ประเภทนี้นั่นคือทำสิ่งที่คล้ายกับหน้าหลักสำหรับประเภทที่กำหนดเอง
- สร้างหมวดหมู่และแท็กที่สามารถเข้าถึงได้ตามประเภทโพสต์ที่กำหนดเอง รวมถึงการจัดหมวดหมู่ที่กำหนดเอง
เนื้อหาประเภทต่างๆ มีข้อกำหนดข้อมูลที่แตกต่างกัน สำหรับโพสต์ทั่วไป คุณจะต้องระบุผู้เขียน หมวดหมู่ และวันที่ สำหรับบันทึกประเภท "หนังสือ" ฉันต้องการระบุผู้แต่งหนังสือ จำนวนหน้า ประเภท ผู้จัดพิมพ์ และข้อมูลเฉพาะอื่นๆ ซึ่งสามารถทำได้ง่ายๆ โดยใช้พื้นที่ที่กำหนดเอง (เมตาบ็อกซ์) สำหรับการป้อนข้อมูล
— พื้นที่สำหรับการป้อนข้อมูลเพิ่มเติมโดยตรงบนหน้าการสร้างบันทึก พื้นที่เหล่านี้ช่วยให้ทำงานกับประเภทโพสต์ที่กำหนดเองได้ง่ายขึ้น
การทำงานกับประเภทโพสต์ที่กำหนดเอง
หากต้องการสร้างและใช้ประเภทโพสต์ที่กำหนดเองอย่างมีประสิทธิภาพ คุณควรทำความคุ้นเคยกับสิ่งต่อไปนี้:
- การสร้างประเภทโพสต์ที่กำหนดเอง
- การสร้างอนุกรมวิธานแบบกำหนดเอง
- การสร้างพื้นที่ข้อมูลที่กำหนดเอง
การสร้างประเภทโพสต์ที่กำหนดเอง
สิ่งแรกที่คุณต้องทำคือสร้างประเภทโพสต์ที่กำหนดเอง ตามหลักการแล้ว คุณจะต้องสร้างปลั๊กอินเพื่อจัดการประเภทโพสต์แบบกำหนดเอง แต่คุณสามารถใช้ไฟล์ Functions.php ของธีมของคุณได้
1 |
|
นี่เป็นรูปแบบที่ง่ายที่สุดในการสร้างประเภทที่แทบไม่มีการตั้งค่าใดๆ เพื่อพัฒนาประเภทโพสต์ใหม่ของเรา เราจะใช้ตัวเลือกที่ใช้บ่อยที่สุดและเพิ่มลงในอาร์เรย์ $args ที่ว่างเปล่าก่อนหน้านี้
1 | ฟังก์ชั่น my_custom_post_product() ( |
- ฉลาก— อาร์เรย์ของป้ายกำกับนี้ใช้เพื่ออธิบายประเภทโพสต์แบบกำหนดเองที่สร้างขึ้นในหัวข้อ/li>
- คำอธิบาย- สรุปประเภทโพสต์แบบกำหนดเองที่กำลังสร้าง ทำหน้าที่อะไร และเหตุใดเราจึงใช้งาน
- สาธารณะ— จะใช้ประเภทที่กำหนดเองต่อสาธารณะหรือไม่ และจะแสดงในพื้นที่บริหารหรือไม่ ในกรณีนี้ความจริงได้ถูกสถาปนาแล้ว
- เมนู_ตำแหน่ง— ตำแหน่งของรายการเมนูประเภทของเราบนแผงผู้ดูแลระบบหลัก ค่า 5 หมายความว่ารายการจะถูกติดตั้งทันทีหลังจากรายการเมนู "บันทึก" หาก 10 หมายถึงหลังจากรายการ "ไฟล์สื่อ" เป็นต้น
- รองรับ— ตัวเลือกนี้มีอาร์เรย์ที่อธิบายฟิลด์ที่เราสามารถแก้ไขได้ในหน้าการสร้างบันทึก นั่นคือชื่อเรื่อง - ช่องสำหรับป้อนชื่อของโพสต์จะปรากฏขึ้น ตัวแก้ไข - พื้นที่ข้อความจะปรากฏขึ้นเพื่อป้อนข้อความของโพสต์ ฯลฯ นอกจากนี้ ยังมีการระบุอนุกรมวิธานที่กำหนดเองที่ใช้ product_category อีกด้วย
- has_archive- หากตั้งค่าเป็นจริง กฎการเขียนซ้ำจะถูกสร้างขึ้น เพื่อให้คุณรับรายการบันทึกประเภทของเราได้ที่ http://mysite.com/product/
หลังจากติดตั้งโค้ดนี้ในไฟล์ function.php แล้ว คุณจะเห็นเมนูสำหรับประเภทโพสต์แบบกำหนดเอง ขณะนี้คุณสามารถเพิ่มบันทึกและดูรายการบันทึกได้แล้ว
อย่างไรก็ตาม ตัวเลือกเหล่านี้ไม่ใช่ทั้งหมดสำหรับอาร์เรย์ของอาร์กิวเมนต์ คุณจะพบรายการตัวเลือกทั้งหมดและความสามารถทั้งหมดของประเภทที่กำหนดเอง
การแจ้งเตือนแบบโต้ตอบ
WordPress สร้างข้อความบางอย่างที่กระตุ้นโดยการกระทำของผู้ใช้ นอกจากนี้เรายังสามารถสร้างข้อความที่คล้ายกันเพื่อแจ้งเตือนผู้ใช้เมื่อทำงานกับประเภทต่างๆ ทำได้โดย post_updated_messages
1 | ฟังก์ชั่น my_updated_messages( $messages ) ( |
โปรดทราบว่าคุณสามารถตั้งค่าการแจ้งเตือนสำหรับโพสต์ที่กำหนดเองทุกประเภทได้โดยใช้ฟีเจอร์นี้ หากคุณไม่ระบุชื่อประเภท ระบบจะใช้การแจ้งเตือนสำหรับประเภทที่กำหนดเองทั้งหมด
เบาะแสตามบริบทไม่ค่อยมีการนำไปใช้และใช้งาน ในฐานะผู้ใช้ ฉันไม่เคยใช้ฟีเจอร์นี้ แต่ฉันแน่ใจว่ามีคนใช้ฟีเจอร์นี้ เรามาสร้างความช่วยเหลือตามบริบทกันดีกว่า
คำแนะนำตามบริบทอยู่ที่มุมขวาบน ใกล้กับแท็บการตั้งค่าหน้าจอ
1 | ฟังก์ชั่น my_contextual_help( $contextual_help , $screen_id , $screen ) ( $contextual_help = " หน้านี้ประกอบด้วยรายการผลิตภัณฑ์ทั้งหมดที่ขายบนเว็บไซต์ รายการจะเรียงตามลำดับเวลาย้อนกลับ โดยรายการสุดท้ายที่แสดงเป็นรายการที่เราเพิ่มก่อน คุณสามารถดู/แก้ไขรายละเอียดของแต่ละผลิตภัณฑ์ได้โดยคลิกที่ชื่อผลิตภัณฑ์ หรือคุณสามารถดำเนินการแบบกลุ่มได้โดยใช้เมนูแบบเลื่อนลงโดยเลือกหลายรายการ ) elseif ( "ผลิตภัณฑ์" == $screen -> id ) ( $contextual_help = " หน้านี้ช่วยให้คุณสร้างผลิตภัณฑ์หรือแก้ไขข้อมูลที่มีอยู่เกี่ยวกับผลิตภัณฑ์ได้ โปรดอย่าลืมกรอกข้อมูลในช่องเพิ่มเติม }
|
เพื่อที่จะแสดงคำแนะนำเครื่องมือดังกล่าว เราจำเป็นต้องทราบรหัสหน้าจอ หากในระหว่างการสร้างคุณจำเป็นต้องค้นหารหัสหน้าจอ ให้ทำดังนี้:
เสียงสะท้อน $ หน้าจอ -> รหัส ; |
อนุกรมวิธานที่กำหนดเอง
สำหรับบล็อกทั่วไป หมวดหมู่และแท็กก็เพียงพอที่จะสร้างโครงสร้างองค์กรได้ แม้ว่าประเภทโพสต์แบบกำหนดเองจะไม่เพียงพอเสมอไป อนุกรมวิธานแบบกำหนดเองสามารถแก้ปัญหานี้ได้ ในกรณีของเรา อนุกรมวิธานที่เรียกว่า "หมวดหมู่ผลิตภัณฑ์" ซึ่งใช้สำหรับโพสต์ที่มีประเภท "ผลิตภัณฑ์" แบบกำหนดเองเท่านั้น
กระบวนการสร้างอนุกรมวิธานแบบกำหนดเองนั้นแทบจะเหมือนกับการสร้างประเภทโพสต์แบบกำหนดเอง ลองดูตัวอย่างของเรา:
1 | ฟังก์ชั่น my_taxonomies_product() ( |
เช่นเดียวกับเมื่อสร้างประเภทที่กำหนดเอง เราได้สร้างอาร์เรย์ป้ายกำกับ และระบุว่าโครงสร้างลำดับชั้นมีความเกี่ยวข้องกับอนุกรมวิธานที่สร้างขึ้น (เช่น อาจมีองค์ประกอบพาเรนต์และองค์ประกอบย่อย) ซึ่งเป็นเรื่องปกติสำหรับหมวดหมู่ในโพสต์ทั่วไป มิฉะนั้น หากโครงสร้างไม่เป็นลำดับชั้น แท็กธรรมดาจะถูกสร้างขึ้น คุณสามารถอ่านเพิ่มเติมเกี่ยวกับอนุกรมวิธาน
พื้นที่ข้อมูลเพิ่มเติม
คุณสามารถดูพื้นที่หรือบล็อกเพิ่มเติมสำหรับการป้อนข้อมูล (เมตาบ็อกซ์) ได้ที่หน้าแก้ไขโพสต์ ใครๆ ก็รู้จักมาตรฐาน เช่น การเลือกหมวดหมู่หรือแท็ก นอกจากนี้ในบางหัวข้อจะมีตัวเลือกที่ให้คุณแนบรูปภาพในโพสต์ ฯลฯ
เนื่องจากเรากำลังสร้าง "ผลิตภัณฑ์" ประเภทที่กำหนดเอง เราจึงจำเป็นต้องมีราคาของผลิตภัณฑ์อย่างชัดเจน มาดูขั้นตอนการสร้างผลิตภัณฑ์ที่กำหนดเองกัน
กระบวนการสร้างสามารถแบ่งออกเป็น 3 ขั้นตอน:
- คำจำกัดความของบล็อกนั้น
- การกำหนดเนื้อหา (ฟิลด์ใดที่มีอยู่ในบล็อก)
- คำอธิบายของอัลกอริทึมสำหรับการประมวลผลข้อมูลที่ป้อน
คำจำกัดความของเมตาบ็อกซ์
1 | add_action( "add_meta_boxes" , "product_price_box" ) ; |
รหัสข้างต้นสร้างบล็อกที่มีพารามิเตอร์ต่อไปนี้:
- product_price_box- ตัวระบุเฉพาะสำหรับเมตาบ็อกซ์ (ไม่จำเป็นต้องตรงกับชื่อฟังก์ชัน)
- ราคาสินค้า— ชื่อของเมตาบ็อกซ์ที่ผู้ดูแลระบบเห็นบนเพจ
- product_price_box_content— ฟังก์ชั่นที่จะแสดงเนื้อหาของหน้าต่าง
- ผลิตภัณฑ์— ชื่อของประเภทโพสต์แบบกำหนดเองซึ่งมีเมตาบ็อกซ์อยู่
- ด้านข้าง— ตำแหน่งของบล็อกบนหน้า (ด้านข้าง, ปกติหรือขั้นสูง — โดยค่าเริ่มต้น)
- สูง— ลำดับความสำคัญของเมตาบ็อกซ์ (ในกรณีนี้คือ "สูง" บล็อกจะอยู่ที่ด้านบนสุดของแถบด้านข้าง ตัวเลือก: สูง, คอร์, ต่ำหรือค่าเริ่มต้น - โดยค่าเริ่มต้น)
คำจำกัดความของเนื้อหา
1 | ฟังก์ชั่น product_price_box_content( $โพสต์ ) ( |
เราเพิ่มเพียงช่องเดียวเพื่อป้อนราคาของผลิตภัณฑ์ โปรดทราบว่าชื่อของฟังก์ชันตรงกับค่าของพารามิเตอร์ตัวที่สามเมื่อมีการประกาศ (โค้ดด้านบน)
การประมวลผลข้อมูลที่ป้อน
ขั้นตอนสุดท้ายคือการบันทึกราคาผลิตภัณฑ์ที่ป้อนลงในฐานข้อมูล
1 | add_action( "save_post" , "product_price_box_save" ) ; ถ้า (กำหนด ("DOING_AUTOSAVE") && DOING_AUTOSAVE) ถ้า ( ! wp_verify_nonce( $_POST [ "product_price_box_content_nonce"] , Plugin_basename( __FILE__ ) ) ) ถ้า ( "หน้า" == $_POST [ "post_type" ] ) ( |
ฟังก์ชั่นส่วนใหญ่คือการตรวจสอบ ก่อนอื่น มีการตรวจสอบการบันทึกอัตโนมัติ ราคาจะไม่ถูกบันทึกจนกว่าจะกดปุ่มบันทึกหรืออัปเดต จากนั้นจะมีการตรวจสอบสิทธิ์การเข้าถึงเพื่อแก้ไขข้อมูลของโพสต์นี้และหลังจากนั้นโดยใช้ฟังก์ชัน update_post_meta ราคาจะถูกป้อนลงในฐานข้อมูล
แสดงโพสต์ประเภทที่สร้างขึ้นในบล็อก
เราได้ผ่านทุกขั้นตอนของการสร้างประเภทโพสต์แบบกำหนดเอง สิ่งที่เหลืออยู่คือการใช้ประโยชน์จากผลงานของเราและสร้างการแสดงโพสต์บนบล็อกตามอนุกรมวิธานที่เราสร้างขึ้น
เนื่องจากในระหว่างการสร้างประเภทที่กำหนดเอง เราระบุเป็น true สำหรับพารามิเตอร์ has_archive รายการบันทึกของประเภทผลิตภัณฑ์จึงมีอยู่ที่ http://mysite.com/product/
ไฟล์ archive-.php (ในกรณีของเรา archive-product.php) ใช้สำหรับการแสดงผลหากมีอยู่ มิฉะนั้น archive.php จะถูกใช้สำหรับการแสดงผล และหากไฟล์ดังกล่าวไม่อยู่ในธีม ก็จะใช้ )
)
;
$products = WP_Query ใหม่( $args ) ;
ถ้า ( $products -> have_posts () ) (
ในขณะที่ ( $products -> have_posts () ) (
$ผลิตภัณฑ์ -> the_post () ;
?>
<
h1>
h1>
<
div class
=
"content"
>
div>
}
}
อื่น(
เสียงสะท้อน “โอ้ ไม่ ไม่พบอาหาร!”;
}
?>
การแสดงราคา
ข้อมูลเพิ่มเติมที่ป้อนในกรณีของเราคือราคาของผลิตภัณฑ์ สามารถดึงข้อมูลได้โดยใช้ฟังก์ชัน get_post_meta() เนื่องจากเราใช้ช่อง product_price เพิ่มเติม เพื่อให้ได้ค่าราคา:
ปลั๊กอินสำหรับสร้างประเภทโพสต์ที่กำหนดเอง
หากคุณไม่มั่นใจในความสามารถในการเขียนโปรแกรมของคุณ คุณสามารถค้นหาโซลูชันสำเร็จรูป (ปลั๊กอิน) และใช้งานได้เสมอ ประเภทที่กำหนดเองก็ไม่มีข้อยกเว้น เสียบเข้าไป WCK ผู้สร้างประเภทโพสต์แบบกำหนดเองช่วยให้คุณสร้างประเภทโพสต์ที่กำหนดเองสำหรับ WordPress ได้อย่างง่ายดายโดยไม่ต้องมีความรู้ด้านการเขียนโค้ด
หมวดหมู่เริ่มต้นใช้สำหรับโพสต์เท่านั้น อย่างไรก็ตาม ในบางสถานการณ์ คุณอาจต้องการใช้กับประเภทโพสต์แบบกำหนดเอง ในบทความนี้เราจะบอกวิธีการทำเช่นนี้
วิธีการปลั๊กอิน
สำหรับผู้ใช้ระดับเริ่มต้น เราขอแนะนำให้ใช้ปลั๊กอิน UI ประเภทโพสต์แบบกำหนดเอง เพื่อสร้างประเภทโพสต์แบบกำหนดเอง การใช้ปลั๊กอินนี้ ช่วยให้คุณสามารถเชื่อมโยงประเภทโพสต์ที่กำหนดเองกับอนุกรมวิธานในตัวหรือแบบกำหนดเอง รวมถึงหมวดหมู่ด้วย หลังจากติดตั้งปลั๊กอินแล้ว ให้ไปที่ CPT UI » เพิ่ม/แก้ไขประเภทโพสต์ เพื่อสร้างประเภทโพสต์ที่กำหนดเองใหม่หรือแก้ไขประเภทที่มีอยู่
เลื่อนลงไปที่ตัวเลือกขั้นสูงแล้วคุณจะเห็นตัวเลือก Taxnomies ในตัว ทำเครื่องหมายที่ช่องถัดจากหมวดหมู่และบันทึกประเภทโพสต์ของคุณ
การเพิ่มหมวดหมู่สำหรับประเภทโพสต์ที่กำหนดเองด้วยตนเอง
หากคุณสร้างประเภทโพสต์แบบกำหนดเองโดยการเพิ่มโค้ดในไฟล์ function.php คุณจะต้องเปลี่ยนโค้ดนั้นเพื่อเพิ่มหมวดหมู่เป็นแบบอนุกรมวิธานที่รองรับ สิ่งที่คุณต้องทำคือเพิ่มบรรทัดนี้ลงในอาร์กิวเมนต์ประเภทโพสต์ที่คุณกำหนดเอง:
'taxonomies' => อาร์เรย์ ('หมวดหมู่'),
อาจเป็นไปได้ว่าคุณมีบรรทัดนี้ในโค้ดของคุณพร้อมกับอนุกรมวิธานที่กำหนดเองอื่นๆ อยู่แล้ว หากเป็นเช่นนั้น คุณเพียงแค่ต้องเพิ่มลูกน้ำหลังจากนั้นและเพิ่มหมวดหมู่:
'taxonomies' => อาร์เรย์ ('หัวข้อ', 'หมวดหมู่'),
นี่คือตัวอย่างโค้ดทั้งหมดที่เราสร้างประเภทโพสต์แบบกำหนดเองที่เรียกว่า "ภาพยนตร์" พร้อมรองรับหมวดหมู่ในตัวทั้งหมด
ฟังก์ชั่น custom_post_type() ( // ตั้งค่าป้ายกำกับ UI สำหรับประเภทโพสต์ที่กำหนดเอง $labels = array("name" => _x("Movies", "Post Type General Name", "twentythirteen"), "singular_name" => _x(" ภาพยนตร์", "ประเภทโพสต์ชื่อเอกพจน์", "ยี่สิบสาม"), "menu_name" => __("ภาพยนตร์", "ยี่สิบสาม"), "parent_item_colon" => __("ภาพยนตร์หลัก", "ยี่สิบสาม"), "all_items " => __("ภาพยนตร์ทั้งหมด", "twentythirteen"), "view_item" => __("ดูภาพยนตร์", "twentythirteen"), "add_new_item" => __("เพิ่มภาพยนตร์ใหม่", "twentythirteen"), "add_new" => __("เพิ่มใหม่", "twentythirteen"), "edit_item" => __("แก้ไขภาพยนตร์", "twentythirteen"), "update_item" => __("อัปเดตภาพยนตร์", "twentythirteen") , "search_items" => __("ค้นหาภาพยนตร์", "twentythirteen"), "not_found" => __("ไม่พบ", "twentythirteen"), "not_found_in_trash" => __("ไม่พบในถังขยะ", " ยี่สิบสาม"),); // ตั้งค่าตัวเลือกอื่นสำหรับประเภทโพสต์ที่กำหนดเอง $args = array("label" => __("movies", "twentythirteen"), "description" => __("ข่าวภาพยนตร์และบทวิจารณ์", "ยี่สิบสาม"), "labels" => $labels, "supports" => array("title", "editor", "excerpt", "author", "thumbnail", "comments", "revisions", "custom" -fields",), "ลำดับชั้น" => เท็จ, "สาธารณะ" => จริง, "show_ui" => จริง, "show_in_menu" => จริง, "show_in_nav_menus" => จริง, "show_in_admin_bar" => จริง, "menu_position " => 5, "can_export" => true, "has_archive" => true, "exclude_from_search" => false, "publicly_queryable" => true, "capability_type" => "page", // นี่คือที่ที่เราเพิ่มอนุกรมวิธาน ถึง CPT ของเรา "taxonomies" => array("category"),); // การลงทะเบียนประเภทโพสต์แบบกำหนดเองของคุณ register_post_type("movies", $args); ) /* เชื่อมต่อการดำเนินการ "init" เพื่อให้ฟังก์ชัน * ที่มีการลงทะเบียนประเภทโพสต์ของเราไม่ได้ * ดำเนินการโดยไม่จำเป็น */ add_action("init", "custom_post_type", 0);
การแสดงโพสต์หลายประเภทในหน้าหมวดหมู่
ตามค่าเริ่มต้น หน้าหมวดหมู่บนไซต์ WordPress จะแสดงประเภทโพสต์มาตรฐาน หากคุณต้องการให้ประเภทโพสต์ของคุณปรากฏในหน้าหมวดหมู่เดียวกันกับโพสต์เริ่มต้น คุณจะต้องเพิ่มโค้ดต่อไปนี้ลงในไฟล์ Functions.php ของคุณ:
Add_filter("pre_get_posts", "query_post_type"); ฟังก์ชั่น query_post_type($query) ( if(is_category()) ( $post_type = get_query_var("post_type"); if($post_type) $post_type = $post_type; else $post_type = array("nav_menu_item", "post", " movies"); // อย่าลืม nav_menu_item เพื่อให้เมนูทำงานได้! $query->set("post_type",$post_type); return $query; ) )
อย่าลืมเปลี่ยนภาพยนตร์เป็นชื่อประเภทโพสต์ที่คุณกำหนดเอง
ความเชี่ยวชาญพิเศษของเราคือการพัฒนาและการสนับสนุนเว็บไซต์ WordPress ติดต่อขอคำปรึกษาฟรี - ,