คำแนะนำฉบับสมบูรณ์เกี่ยวกับประเภทโพสต์ที่กำหนดเองใน WordPress ประเภทโพสต์ที่กำหนดเองใน WordPress - register_post_types, register_taxonomy คุณควรสร้างประเภทโพสต์ที่กำหนดเองในกรณีใด

$post_type ( เส้น) สิ่งที่คุณต้องการตั้งชื่อประเภทโพสต์ของคุณ ชื่อนี้จะถูกนำมาใช้ในพารามิเตอร์ของฟังก์ชันต่างๆ มากมายในอนาคต โปรดจำไว้เสมอ นอกจากนี้ คำต่อไปนี้ที่สงวนไว้โดย WordPress ไม่สามารถใช้เป็นชื่อได้:

  • สิ่งที่แนบมา
  • การแก้ไข
  • nav_menu_item
  • กำหนดเอง_css
  • ปรับแต่ง_changeset
  • การกระทำ
  • คำสั่ง
  • ธีม
  • ผู้เขียน
$args ( อาร์เรย์) ประกอบด้วยพารามิเตอร์ต่อไปนี้: ป้ายกำกับ ( อาร์เรย์) อนุญาตให้คุณลงนามองค์ประกอบอินเทอร์เฟซของประเภทโพสต์ที่กำหนด รายละเอียดเพิ่มเติมในตัวอย่างท้ายโพสต์ คำอธิบาย( เส้น) คำอธิบายของประเภทบันทึกที่กำลังลงทะเบียน ตามความรู้ของฉัน การตั้งค่านี้ไม่ได้ใช้ที่ใดในกลไก WordPress หรือในปลั๊กอินและธีมมาตรฐาน แต่อาจใช้ในปลั๊กอินหรือธีมของบุคคลที่สามได้เป็นอย่างดี สาธารณะ( ตรรกะ) สรุปพารามิเตอร์สองสามตัวถัดไปโดยตั้งค่าให้เป็นค่าเริ่มต้นตามลำดับ publicly_queryable ( ตรรกะ) จำเป็นต้องมีองค์ประกอบของโพสต์ประเภทนี้บนเว็บไซต์หรือไม่ อ่านเพิ่มเติมเกี่ยวกับวัตถุประสงค์ของพารามิเตอร์นี้
ค่าเริ่มต้น: ค่าอาร์กิวเมนต์สาธารณะ ยกเว้น_จาก_ค้นหา( ตรรกะ)
  • จริง — ยกเว้นบันทึกประเภทนี้จากผลการค้นหาบนไซต์
  • เท็จ - อย่ายกเว้น

ค่าเริ่มต้น: ค่าตรงข้ามของพารามิเตอร์สาธารณะ 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" => "เพิ่มผลิตภัณฑ์ใหม่", // ชื่อแท็ก </span>"edit_item" => <span>"แก้ไขสินค้า"</span>, "new_item" => "ผลิตภัณฑ์ใหม่" , "all_items" => "ผลิตภัณฑ์ทั้งหมด" , "view_item" => <span>"ชมสินค้าบนเว็บไซต์"</span>, "search_items" => "ค้นหาผลิตภัณฑ์" , "not_found" => <span>"ไม่พบสินค้า"</span>, "not_found_in_trash" => <span>"ไม่มีสินค้าอยู่ในรถเข็น"</span>, "menu_name" => "ผลิตภัณฑ์" <span>// ลิงก์ในเมนูในแผงผู้ดูแลระบบ</span>) ; $args = array ( "labels" => $labels , "public" => true , <span>// ด้วยเหตุนี้จึงสามารถข้ามพารามิเตอร์บางตัวได้</span>"menu_icon" => "dashicons-cart" , <span>// ไอคอนรถเข็น</span>"menu_position" => 5 , "has_archive" => true , "supports" => array ( "title" , "editor" , "excerpt" , "thumbnail" , "comments" ) , "taxonomies" => array ( " post_tag" ) ) ; register_post_type("ผลิตภัณฑ์" ,$args ) ; )</td> </tr></table><p><span class="koXPsjWcBis"></span></p></ul> <p>สร้างประเภทโพสต์ที่กำหนดเอง <b>บทความ</b>ด้วยหมวดหมู่ที่กำหนดเอง (Custom Taxonomy) <b>หมวดบทความ</b>.</p><p>ในกรณีของฉัน บันทึกมาตรฐานทั้งหมดคือผลิตภัณฑ์ ดังนั้นเราจะแสดงบทความผ่านบันทึกที่กำหนดเอง</p><p>ในไฟล์ฟังก์ชั่น Functions.php เราลงทะเบียนบทความประเภทโพสต์ที่กำหนดเอง:</p><p>ฟังก์ชัน 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");</p><p>หากคุณต้องการให้หมวดหมู่มาตรฐานแสดงในโพสต์ที่กำหนดเอง ให้เชื่อมโยงหมวดหมู่เหล่านั้นกับอนุกรมวิธานหมวดหมู่:</p><p>"taxonomies" => array("หมวดหมู่"),</p><p>หากคุณสร้างการจัดหมวดหมู่ที่กำหนดเองสำหรับโพสต์ที่กำหนดเองด้วย คุณจะต้องเชื่อมโยงกับการจัดหมวดหมู่ที่สร้างขึ้น หากเราใช้ตัวอย่างด้านล่าง รายการเหล่านี้จะเป็น Articles_category</p><p>"taxonomies" => array("articles_category"),</p><p>จากนั้น สำหรับประเภทโพสต์บทความที่กำหนดเอง เราจะลงทะเบียนการจัดหมวดหมู่ 'หมวดหมู่บทความ' เพื่อให้โพสต์ที่แตกต่างกันสามารถอยู่ในหมวดหมู่ที่แตกต่างกันได้</p><p>ฟังก์ชัน 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");</p><p>สำหรับอนุกรมวิธานที่กำหนดเอง คุณสามารถเปลี่ยนทากให้สวยงามยิ่งขึ้นได้เพื่อไม่ให้ Articles_category แต่คุณต้องแน่ใจว่าไม่มีทากดังกล่าวในหน้าหรือโพสต์อื่นอีกต่อไป มิฉะนั้นจะเกิดปัญหา:</p><p>"เขียนใหม่" => array("slug" => "blog"),</p><p>เมื่อเปลี่ยนทากคุณต้องอัปเดตการตั้งค่า "ลิงก์ถาวร" ในแผงผู้ดูแลระบบ มิฉะนั้นคุณจะได้รับข้อผิดพลาด 404 แทนที่จะเป็นหน้าที่ต้องการ</p><p>สามารถดูตัวอย่างเพิ่มเติมได้ที่นี่ แต่มันช่วยจัดเรียงโค้ดทั้งหมดนี้ตามลำดับ ซึ่งฉันรู้สึกขอบคุณผู้เขียนมาก</p><p>ไฟล์ single.php มีหน้าที่รับผิดชอบในการปรากฏของโพสต์ที่กำหนดเอง แต่หากต้องการเปลี่ยนรูปลักษณ์ของโพสต์ที่กำหนดเอง คุณสามารถสร้างไฟล์ single-(post_type).php - ในกรณีของฉันมันจะเป็น single-articles.php ด้วย เนื้อหาของตัวเอง</p><p>ตอนนี้คุณต้องแสดงโพสต์ที่กำหนดเองบนเพจ ตามค่าเริ่มต้น ไฟล์ index.php มีหน้าที่ในการแสดงไฟล์เก็บถาวรของโพสต์ที่กำหนดเอง แต่คุณสามารถสร้างไฟล์ที่จะรับผิดชอบในการแสดงรายการที่กำหนดเองในอนุกรมวิธานของคุณได้ <br></p><h2>ตัวเลือกที่ 1 ถูกต้องที่สุด เราแสดงรายการในอนุกรมวิธานในลักษณะเดียวกับในหมวดหมู่ปกติ</h2><p>เมื่อต้องการทำสิ่งนี้ ให้สร้างไฟล์อนุกรมวิธาน-(อนุกรมวิธาน).php - ในกรณีของฉัน มันจะเป็นอนุกรมวิธาน-articles_category.php และในนั้นเราจะแสดงวงจรปกติ เช่นเดียวกับรายการมาตรฐานในหมวดหมู่:</p><p> <div class="container"> <div class="row"> <div class="col-md-12"> <div class="cat-title"><?php single_cat_title(); ?></div> <div class="tax-wrap"> <?php if (have_posts()) : while (have_posts()) : the_post(); get_template_part("include/tax-item"); endwhile; get_template_part("include/pagination"); endif; ?> </div><!-- /tax-wrap --> </div><!-- /col-md-12 --> </div><!-- /row --> </div><!-- /container --> </p><p>ในไฟล์ Tax-item.php เราแสดงข้อมูลที่เราต้องการจากแต่ละโพสต์ เช่น ชื่อเรื่อง ลิงก์ของโพสต์ ภาพขนาดย่อ และข้อความที่ตัดตอนมา</p><p>ในไฟล์ pagination.php เราจะแสดงการแบ่งหน้าในรูปแบบนี้</p><p>วงจรนี้ไม่สามารถเปลี่ยนแปลงได้ การแบ่งหน้าใช้งานได้ดี นี่คือตัวเลือกที่ดีที่สุดสำหรับการแสดงการจัดหมวดหมู่แบบกำหนดเอง <br></p><h2>ตัวเลือกที่ 2 – หากไม่มีการจัดหมวดหมู่ที่กำหนดเอง คุณสามารถรับโพสต์ที่กำหนดเองทั้งหมดในรูปแบบของไฟล์เก็บถาวร</h2><p>ในการดำเนินการนี้ ในเทมเพลต เราสร้างไฟล์ archive-(post_type).php - ในกรณีของฉัน มันจะเป็น archive-articles.php ซึ่งเช่นเดียวกับในอนุกรมวิธาน เราจะแสดงการวนซ้ำปกติเท่านั้น แทนที่จะเป็น ชื่ออนุกรมวิธานที่เราแสดงชื่อของประเภทการโพสต์ที่กำหนดเอง<?php post_type_archive_title(); ??> :</p><p> <div class="container"> <div class="row"> <div class="col-md-12"> <div class="cat-title"><?php post_type_archive_title(); ?></div> <div class="tax-wrap"> <?php if (have_posts()) : while (have_posts()) : the_post(); get_template_part("include/tax-item"); endwhile; get_template_part("include/pagination"); endif; ?> </div><!-- /tax-wrap --> </div><!-- /col-md-12 --> </div><!-- /row --> </div><!-- /container --> </p><p>ด้วยตัวเลือกนี้ หากยังไม่ได้สร้างหน้าเก็บถาวรสำหรับโพสต์ที่กำหนดเอง คุณจะได้รับรายการโพสต์ที่กำหนดเองทั้งหมดโดยใช้ลิงก์โดยตรง BLOG_URL?post_type=(post_type) หรือในกรณีของฉัน http://site.com/ บทความ/ . <br></p><h2>ตัวเลือกที่ 3 เพียงแสดงรายการบทความที่กำหนดเองทั้งหมดบนหน้าด้วยเทมเพลตที่กำหนด</h2> <?php $args = array("post_type" =>"บทความ", "posts_per_page" => -1); $loop = WP_Query ใหม่($args); ในขณะที่ ($loop->have_posts()) : $loop->the_post(); get_template_part("รวม/รายการภาษี"); ท้ายที่สุด; ?> <p>get_template_part("รวม/รายการภาษี"); – ในไฟล์ Tax-item.php ฉันแสดงเนื้อหาโพสต์ที่ฉันต้องการเพื่อแสดงโพสต์ภายในลูป (ชื่อเรื่อง รูปขนาดย่อ วันที่ ใบเสนอราคา ฯลฯ)</p><p>ตัวเลือกนี้จะแสดงบทความทั้งหมดบนหน้า โดยไม่คำนึงถึงการจัดหมวดหมู่ (หมวดหมู่)</p><p>และหากเราต้องการแสดงแต่ละหมวดหมู่แยกกันพร้อมข่าวสารของตัวเอง เราก็ใช้ตัวเลือกแรกที่อธิบายไว้ข้างต้น</p><p>ดังที่กล่าวไว้ หากคุณใช้ปลั๊กอิน Yoast SEO และใช้ breadcrumbs:</p><p> <?php if (function_exists("yoast_breadcrumb")) { yoast_breadcrumb(" "); } ?> </p><p>จากนั้น เมื่อคุณเลือกอนุกรมวิธาน “หมวดหมู่บทความ” ในการตั้งค่าปลั๊กอินใน “อนุกรมวิธานที่จะแสดงในเบรดครัมบ์สำหรับประเภทโพสต์” ในเบรดครัมบ์ คุณจะได้รับลิงก์ไปยังหมวดหมู่ที่เป็นเจ้าของข่าวสาร พร้อมด้วยตัวเลือกอื่นๆ สำหรับการแสดงโพสต์ที่กำหนดเอง สิ่งนี้ไม่สามารถทำได้</p> <p>เกี่ยวกับประเภทโพสต์แบบกำหนดเองใน WordPress (CPT, ประเภทโพสต์แบบกำหนดเองใน WordPress), วิธีสร้างและกำหนดค่า, เพิ่มหมวดหมู่และแท็ก, วิธีสร้าง URL ที่ซ้อนกัน /ประเภทโพสต์/category/post หรือ http://example.com/post_type/ หมวดหมู่/ โพสต์/ . <br>นอกจากนี้ยังอธิบายวิธีขยายฟังก์ชันมาตรฐานของ WordPress ด้วยการสร้างโพสต์ประเภทใหม่ที่สามารถใช้เพื่อวัตถุประสงค์ต่างๆ เช่น การเพิ่มพอร์ตโฟลิโอของคุณเอง ดัชนีภาพยนตร์และเพลง แค็ตตาล็อกผลิตภัณฑ์ ปฏิทินกิจกรรม แม้กระทั่งสร้างผลงานเล็กๆ น้อยๆ ทางออนไลน์ของคุณเอง ร้านค้า (เพราะว่าใหญ่ ควรใช้โซลูชันสำเร็จรูปเช่น WooCommerce) หรือเครือข่ายโซเชียล และอื่นๆ อีกมากมายในจิตวิญญาณนี้ <br>ขั้นแรก ข้อมูลทั่วไป จากนั้นข้อมูลเฉพาะเจาะจง</p> <h2>เกี่ยวกับโพสต์ใน WordPress: ตำแหน่งที่จัดเก็บไว้ในฐานข้อมูลและวิธีรับ</h2> <p>โพสต์ทั้งหมดใน WordPress ที่จะกล่าวถึงด้านล่างนี้ จะถูกจัดเก็บไว้ในตารางเดียว: wp_posts ข้อมูลเมตาของโพสต์ เช่น ข้อมูลจากเมตาบ็อกซ์ จะถูกจัดเก็บไว้ในตาราง wp_postmeta</p> <p>ฉันจะยกตัวอย่างวิธีรับโพสต์ประเภท 10 โพสต์ (standard <b>กระทู้</b>ในแผงผู้ดูแลระบบ) <br>โดยทั่วไปแล้ว ไม่จำเป็นต้องขอข้อมูลเป็นการเฉพาะ ในเทมเพลตจะมีการติดตั้งไว้ล่วงหน้าแล้ว เช่น ใน single.php ข้อมูลบันทึกพร้อมสำหรับการประมวลผลแบบวนซ้ำแล้ว</p><p>If (have_posts()) ( while (have_posts()) ( the_post(); // ในที่นี้เราใช้ข้อมูลจากลูป เช่น the_title() ฯลฯ ) )</p><p>หากจำเป็นต้องได้รับข้อมูลที่ไหนสักแห่งนอกลูปหรือเทมเพลต ระบบจะใช้แบบสอบถาม WP_Query</p><p>$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() ?> <?php } wp_reset_postdata(); } </p><p>สามารถรับข้อมูลได้โดยใช้แบบสอบถาม SQL:</p><p>Global$wpdb; $query = "SELECT * FROM ($wpdb -> โพสต์) โดยที่ post_type = "โพสต์" จำกัด 10"; $p = $wpdb -> get_results($แบบสอบถาม); ทางออก(print_r($p)); // $p ตอนนี้มีอาร์เรย์พร้อมข้อมูลการโพสต์</p><p>ทั้งสามวิธีข้างต้นจะให้ผลลัพธ์ที่เหมือนกัน <br></p> <h2>ประเภทโพสต์ที่กำหนดไว้ล่วงหน้าใน WordPress: โพสต์, หน้า, เอกสารแนบ, การแก้ไข, nav_menu_item</h2> <h3>รายการหรือโพสต์ (โพสต์)</h3> <p>หน่วยที่ใช้มากที่สุดทุกประเภทที่อยู่ใน WordPress คือ โพสต์ (หรือที่เรียกว่าโพสต์) ใช้เป็นโพสต์บล็อกและอื่น ๆ มีการจัดหมวดหมู่ที่กำหนดไว้ล่วงหน้า 2 แบบ: ส่วนหัวหรือที่เรียกว่าหมวดหมู่ (หมวดหมู่) และแท็กหรือที่เรียกว่าแท็ก (post_tag) <br>การจัดหมวดหมู่ใช้ในการจัดเรียงและจัดระเบียบโพสต์ <br>หมวดหมู่แตกต่างจากแท็กตรงที่มีโครงสร้างแบบต้นไม้ (สามารถซ้อนกันภายในกันและกันได้) <br>ป้ายกำกับเป็นหน่วยที่เป็นอิสระจากกัน และด้วยวิธีนี้จึงค่อนข้างคล้ายกับบันทึก <br>นอกจากนี้ ตามค่าเริ่มต้นแล้ว ฟีด RSS ของไซต์ WordPress จะถูกสร้างขึ้นจากรายการต่างๆ</p> <p>ไฟล์เทมเพลตต่อไปนี้ใช้สำหรับเรคคอร์ด (ตามลำดับความสำคัญ):</p> <ol><li>single-post.php</li> <li>single.php</li> <li>เอกพจน์.php</li> <li>ดัชนี.php</li> </ol><blockquote class="note"><p>ไฟล์เทมเพลตจะถูกค้นหาจากบนลงล่างตามลำดับความสำคัญ หากพบไฟล์เทมเพลตในธีม ไฟล์นั้นจะถูกใช้และการค้นหาจะหยุดลง</p> </blockquote> <h3>หน้า</h3> <p>หน้าเหล่านี้ส่วนใหญ่จะใช้เป็นหน้าบริการ หน้า Landing Page หน้า Landing Page คอลเลกชันสารานุกรม และอื่นๆ ที่คล้ายคลึงกัน พวกเขามีลำดับชั้นเหมือนต้นไม้นั่นคือสามารถซ้อนกันได้ซึ่งจะปรากฏในที่อยู่ของหน้าสุดท้าย (ทางลัดหลักจะปรากฏในห่วงโซ่ URL) และในบทบาทนี้เป็นไปได้ที่จะ ให้ความสำคัญกับการเรียงลำดับ <br>หากต้องการสร้างหน้า Landing Page คุณสามารถทำได้สองวิธี: <br></p> <h4>สร้างเทมเพลตหน้าพิเศษ</h4> <p>ที่ใดที่หนึ่งในธีมในรูทหรือไดเร็กทอรีย่อย ให้สร้างไฟล์ที่มีชื่อที่กำหนดเองและนามสกุล php เช่น Landing.php ข้างในคุณสามารถวางเทมเพลตใดก็ได้ซึ่งอาจแตกต่างอย่างสิ้นเชิงจากหน้าอื่น ๆ บนเว็บไซต์ แต่สิ่งสำคัญคือต้องวางโค้ดนี้ไว้ที่จุดเริ่มต้นของไฟล์:</p><p> <?php /* Template Name: Наш уникальный лендинг */ </p><p>ชื่อเทมเพลตเป็นป้ายกำกับพิเศษที่บอก WordPress ว่าไฟล์นี้เป็นเทมเพลตพิเศษ <br>ตอนนี้ เมื่อสร้างและแก้ไขหน้าใด ๆ ให้ดูในบล็อกทางด้านขวาที่เรียกว่าคุณสมบัติของหน้า ในนั้นในส่วนเทมเพลต คุณสามารถเลือกหน้า Landing Page ที่ไม่ซ้ำใครของเราได้</p> <p>สำหรับเพจ จะใช้ลำดับชั้นเทมเพลตต่อไปนี้ เช่นเดียวกับ Records ฉันระบุตามลำดับความสำคัญ:</p> <ol><li>(เทมเพลต).php</li> <li>หน้า-(page_label).php</li> <li>หน้า-(page_ID)</li> <li>หน้า.php</li> <li>เอกพจน์.php</li> <li>ดัชนี.php</li> </ol><h3>เอกสารแนบ เอกสารแนบ หรือเอกสารแนบ</h3> <p>ประเภทยูทิลิตี้ที่ออกแบบมาเพื่อจัดเก็บข้อมูลเกี่ยวกับไฟล์ (รูปภาพ เสียง วิดีโอและสิ่งที่คล้ายกัน) ที่ถูกอัพโหลดผ่านผู้อัพโหลดในตัวแก้ไข WordPress มาตรฐาน เมื่อแก้ไขโพสต์ เพจ หรือสิ่งที่คล้ายกัน: ขนาด น้ำหนัก คำอธิบาย โพสต์หรือเพจใด พวกเขาผูกพันกับอะไรแบบนั้น</p> <p>คุณสามารถรับไฟล์แนบสำหรับการจัดการในภายหลังโดยใช้รหัสต่อไปนี้:</p><p>$args = array("post_type" => "attachment", // Post type: attachment "post_status" => "inherit", // ค่าเริ่มต้นคือ "publish" และด้วยเหตุนี้คุณจะไม่สามารถรับไฟล์แนบได้ ดังนั้นเราจึงระบุ สถานะไฟล์แนบพิเศษ " สืบทอด"); $p = get_posts($args); ทางออก(print_r($p)); // ที่เอาต์พุตเราจะมีอาร์เรย์พร้อมไฟล์แนบ</p><p>ลำดับชั้นของเทมเพลตสำหรับไฟล์แนบ:</p> <ol><li>(ชนิด mime).php</li> <li>(ชนิดย่อย mime).php</li> <li>(ประเภท mime-ชนิดย่อย).php</li> <li>สิ่งที่แนบมา.php</li> <li>single.php</li> <li>เอกพจน์.php</li> <li>ดัชนี.php</li> </ol><h3>การแก้ไข ฉบับร่าง หรือการแก้ไข</h3> <p>การแก้ไขหรือที่เรียกว่าการแก้ไขคือเวอร์ชันของโพสต์ฉบับร่างที่สร้างขึ้นโดยอัตโนมัติในขณะที่คุณกำลังเขียนบทความในแผงผู้ดูแลระบบ WordPress หรือบันทึกบทความโดยไม่ได้เผยแพร่จริง <br>ในระหว่างขั้นตอนการเขียน ตามค่าเริ่มต้น สำหรับแต่ละบทความ แบบร่างแต่ละเวอร์ชันจะถูกบันทึก คุณสามารถเปรียบเทียบสองเวอร์ชันที่แตกต่างกัน และคุณสามารถย้อนกลับไปยังเวอร์ชันที่คุณต้องการได้ <br>การจัดเก็บบทความเดียวกันหลายๆ เวอร์ชันนั้นค่อนข้างแพงและมักจะไร้จุดหมาย (แม้ว่ามันอาจจะถูกต้องมากกว่าถ้าทิ้งทุกอย่างไว้เป็นค่าเริ่มต้น โดยทำการล้างการแก้ไขเก่าๆ เป็นประจำโดยใช้ปลั๊กอิน เช่น WP Optimize) ดังนั้นจำนวนเวอร์ชันการแก้ไขที่บันทึกไว้ สามารถเปลี่ยนได้ 2 ตัวเลือก:</p> <ol><li>ใช้ตัวกรอง wp_revisions_to_keep</li> <li>ลงทะเบียนใน wp-config.php //ปิดการใช้งานการแก้ไขเป็นค่าต่ำสุดที่เป็นไปได้ กำหนด("WP_POST_REVISIONS", 0); <p>ค่าที่เป็นไปได้:</p> <ul><li>จริงหรือ -1: บันทึกแบบร่างทุกเวอร์ชัน ตัวเลือกเริ่มต้น</li> <li>false หรือ 0: ปิดใช้งานการบันทึกแบบร่าง ยกเว้น 1 บันทึกอัตโนมัติ</li> <li>จำนวนเต็มมากกว่าศูนย์: จำนวนเวอร์ชันร่างที่ระบุจะถูกบันทึก + 1 บันทึกอัตโนมัติ เวอร์ชันเก่าที่ไม่พอดีกับหมายเลขที่ระบุจะถูกลบโดยอัตโนมัติ</li> </ul></li> </ol><h3>รายการเมนูการนำทาง (nav_menu_item)</h3> <p>เมนูการนำทาง (nav_menu_item) เป็นประเภทโพสต์ที่เก็บข้อมูลเกี่ยวกับรายการการนำทางใน WordPress เรกคอร์ดประเภทแรกและประเภทเดียวที่ไม่ได้ใช้เหมือนกับเรกคอร์ดประเภทอื่น ข้อมูลสำหรับการดำเนินการและการแสดงบนไซต์จะได้รับฟังก์ชันแยกต่างหากของตัวเอง <br>นอกจากนี้ เมนูการนำทางจะไม่เปิดใช้งานตามค่าเริ่มต้น หากต้องการเปิดใช้งาน คุณต้องประกาศการสนับสนุนใน:</p> <ol><li>เขียน add_theme_support("menus");</li> <li>หรือลงทะเบียนพื้นที่เมนูโดยใช้ register_nav_menu() จากนั้นการสนับสนุนเมนูจะถูกเปิดใช้งานโดยอัตโนมัติ</li> </ol><p>ใช้ wp_nav_menu() เพื่อรับข้อมูลเนื่องจาก WP_Query จะไม่ทำงานและนั่นคือคุณสมบัติของประเภทโพสต์ nav_menu_item</p><p>// รหัสนี้จะใช้งานได้ wp_nav_menu(); // แสดงเมนูที่ไม่ว่างเปล่าแรกที่ลงทะเบียนไว้ // แต่โค้ดด้านล่างนี้ใช้ไม่ได้ $args = array("post_type" => "nav_menu_item", // Post type: page, attachment, ...); $p = get_posts($args); ทางออก(print_r($p)); // ผลลัพธ์จะเป็นอาร์เรย์ว่าง</p><h2>ประเภทโพสต์ที่กำหนดเอง (CPT WordPress)</h2> <p>ตอนนี้เรามาถึงสิ่งสำคัญแล้ว - เครื่องมือที่ช่วยให้คุณขยายฟังก์ชันการเขียนบล็อก WordPress มาตรฐานไปสู่ความเป็นไปได้ไม่รู้จบ: ประเภทโพสต์แบบกำหนดเองที่กำหนดเอง <br>ตัวอย่างที่ง่ายที่สุดของวิธีการลงทะเบียนโพสต์ประเภทใหม่ sheensay_product ของเรา</p><p>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"), // เปิดใช้งานการสนับสนุนสำหรับ ชื่อเรื่อง, ผู้แก้ไข, ภาพขนาดย่อ, ความคิดเห็น)); )</p><p>ที่นี่ sheensay_product คือชื่อของประเภทโพสต์ใหม่ ไม่ควรขัดแย้งกับผู้อื่นในระบบ ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ด้านล่าง <br>นอกจากนี้ ในรูปลักษณ์นี้ ยังทำหน้าที่เป็นทางลัดไปยังโพสต์ประเภทนี้ กล่าวคือ มีอยู่ใน URL หากคุณต้องการระบุทางลัดอื่น เป็นต้น <b>สินค้า</b>ให้ทำตามตัวอย่างด้านล่าง</p><p>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"),) ) ; )</p><h3>วิธีเลือกชื่อที่เหมาะสมสำหรับโพสต์ประเภทใหม่</h3> <blockquote class="attention"><p>ชื่อต่อไปนี้สงวนไว้ใน WordPress และไม่สามารถใช้เป็นชื่อของประเภทโพสต์ใหม่ได้:</p> <ul><li>สิ่งที่แนบมา</li> <li>การแก้ไข</li> <li>nav_menu_item</li> <li>การกระทำ</li> <li>ธีม</li> <li>คำสั่ง</li> </ul><p>นอกจากนี้ คุณควรหลีกเลี่ยงการใช้คำนำหน้า wp_ ที่จุดเริ่มต้นของชื่อ เนื่องจากอาจทำให้เกิดความขัดแย้งกับคอร์ WordPress เวอร์ชันในอนาคต <br>จะเป็นการดีที่สุดหากคุณใส่คำนำหน้าชื่อด้วยคำนำหน้าที่เกี่ยวข้องกับชื่อไซต์ ผลิตภัณฑ์ หรือแบรนด์ของคุณ เช่น sheensay_product รับประกันว่าคุณจะหลีกเลี่ยงความขัดแย้งที่อาจเกิดขึ้นได้</p> </blockquote> <h3>วิธีสร้างอนุกรมวิธานแบบกำหนดเอง</h3> <p>ประเภทโพสต์ที่กำหนดเองสามารถใช้การจัดหมวดหมู่จากโพสต์ เช่น หมวดหมู่ (หมวดหมู่) หรือแท็ก (แท็ก) แต่คุณสามารถมีการจัดหมวดหมู่ของคุณเองได้</p><p>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") , // เปิดใช้งานการสนับสนุนสำหรับชื่อเรื่อง, เครื่องมือแก้ไข, ภาพขนาดย่อ )); )</p><h3>เทมเพลตสำหรับประเภทโพสต์ที่กำหนดเอง</h3> <p>ทุกอย่างขึ้นอยู่กับประเภทของข้อมูลที่แสดง อาจมี 3 ตัวเลือก: เทมเพลตโพสต์เฉพาะ เทมเพลตการเก็บถาวรโพสต์ และเทมเพลตอนุกรมวิธาน <br></p> <h4>เทมเพลตหน้าโพสต์</h4> <p>เรียงตามลำดับความสำคัญ</p> <ol><li>เดี่ยว-(post_type).php</li> <li>single.php</li> <li>ดัชนี.php</li> </ol><h4>โพสต์เทมเพลตการเก็บถาวร</h4> <ol><li>ไฟล์เก็บถาวร-(post_type).php</li> <li>ไฟล์เก็บถาวร.php</li> <li>ดัชนี.php</li> </ol><h4>เทมเพลตอนุกรมวิธานแบบกำหนดเอง</h4> <ol><li>อนุกรมวิธาน-(taxonomy_name)-(term_name).php</li> <li>อนุกรมวิธาน-(taxonomy_name).php</li> <li>Taxonomy.php</li> <li>ไฟล์เก็บถาวร.php</li> <li>ดัชนี.php</li> </ol><p>ที่นี่ Taxonomy_name คือ sheensay_product_type และ term_name คือป้ายกำกับของอนุกรมวิธานที่คุณจะสร้างในแผงผู้ดูแลระบบ</p> <h3>วิธีรับข้อมูลประเภทโพสต์แบบกำหนดเอง (Custom Post Type WordPress) และแสดงบนเว็บไซต์</h3> <p>คุณสามารถรับข้อมูลประเภทโพสต์ที่กำหนดเองใน WordPress เพื่อแสดงบนเว็บไซต์ของคุณโดยใช้วิธีการเดียวกันกับโพสต์และเพจทั่วไป</p><p>$args = array("post_type" => "sheensay_product", // ระบุประเภทโพสต์ใหม่ของเรา "posts_per_page" => 10,); $p = get_posts($args); foreach ($p เป็น $post) ( setup_postdata($post); ?> "><?= the_title() ?><br /> <?php } wp_reset_postdata(); ?> </p><p>หากเราพูดถึงคำขอหลักซึ่งมีการโหลดข้อมูลไว้ล่วงหน้าเพื่อแสดงบนหน้าหลักหรือหน้าเก็บถาวรมาตรฐาน ประเภทโพสต์ที่กำหนดเองจะถูกปิดใช้งานที่นั่น <br>ดังนั้น หากคุณต้องการให้ประเภทโพสต์ที่สร้างขึ้นปรากฏบนหน้าเก็บถาวรพร้อมกับโพสต์ทั่วไป คุณต้องเปลี่ยนตัวกรองการโหลดโพสต์ล่วงหน้า</p><p>// เชื่อมต่อ "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 ; )</p><h3>คลาสสำเร็จรูปสำหรับการสร้างประเภทโพสต์แบบกำหนดเองพร้อมอนุกรมวิธานแบบกำหนดเอง</h3> <p>ด้านล่างนี้เป็นคลาสที่คุณสามารถลงทะเบียนประเภทโพสต์ที่กำหนดเองด้วยอนุกรมวิธานของตัวเองได้ และ URL จะมีลักษณะเช่นนี้ <br>http://example.com/products/type/product</p> <blockquote class="note"><p>เพื่อให้ URL ถูกสร้างขึ้น คุณต้องไปที่การตั้งค่าลิงก์ถาวร /wp-admin/options-permalink.php และตั้งค่าการตั้งค่าทั่วไปประเภทใดก็ได้นอกเหนือจากแบบธรรมดา</p> <p><img src='https://i0.wp.com/sheensay.ru/wp-content/uploads/2016/08/options-permalink.png' width="100%" loading=lazy loading=lazy></p> </blockquote> <p>ด้านล่างนี้คือรหัสชั้นเรียน คุณไม่จำเป็นต้องทำการเปลี่ยนแปลงใดๆ แต่คุณสามารถเปลี่ยนป้ายกำกับประเภทโพสต์ที่ส่วนท้ายสุดของบรรทัด new Sheensay_Product("products"); <br>รหัสนั้นเขียนอยู่ในหรือใน. ควรใช้ตัวเลือกแรกเนื่องจากในกรณีนี้ คุณจะไม่สูญเสียการเข้าถึงเนื้อหาของโพสต์ประเภทใหม่เมื่อเปลี่ยนธีมที่ใช้งานอยู่</p><p> <??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");</p><p>ขณะนี้ในแผงผู้ดูแลระบบ คุณสามารถลงทะเบียนผลิตภัณฑ์ใหม่และประเภทของผลิตภัณฑ์ได้</p> <p>ก! ระบบการจัดการเนื้อหา <b>เวิร์ดเพรส</b>ได้รับการยอมรับเป็นเวลาหลายปี แต่ความก้าวหน้าที่แท้จริงคือการนำความสามารถในการแยกบันทึกออกเป็นประเภทต่างๆ ในบทนี้ เราจะมาดูรายละเอียดเกี่ยวกับประเภทโพสต์ที่กำหนดเอง การสร้าง และการใช้งาน</p> <h3>ประวัติเล็กน้อย</h3> <p>ในทางปฏิบัติ ประเภทโพสต์ที่กำหนดเองปรากฏขึ้นเมื่อนานมาแล้ว และแม่นยำยิ่งขึ้นตั้งแต่วันที่ 17 กุมภาพันธ์ 2548 เมื่อ <b>เวิร์ดเพรส 1.5</b>เพิ่มการรองรับประเภทที่กำหนดเองสำหรับเพจแบบคงที่ผ่านฟิลด์ post_type ในฐานข้อมูล ฟังก์ชัน Wp_insert_post() มีมาตั้งแต่นั้นเป็นต้นมา <b>เวิร์ดเพรส 1.0</b>ดังนั้นเมื่อมีการใช้ฟิลด์ post_type ใน 1.5 จึงค่อนข้างง่ายที่จะเติมข้อมูลโดยใช้ฟังก์ชันนี้</p> <p>และเฉพาะในเวอร์ชัน 2.8 เท่านั้นที่ฟังก์ชัน register_post_type() สำหรับการสร้างประเภทที่กำหนดเองปรากฏขึ้นและสิ่งที่มีประโยชน์อื่น ๆ มีให้ใช้งานใน "nightly builds" และตั้งแต่ 2.9 ฟังก์ชันก็พร้อมใช้งานสำหรับทุกคนแล้ว</p> <h3>อะไรตอนนี้!</h3> <p>ประเภทโพสต์ที่กำหนดเองไม่มีอะไรมากไปกว่าโพสต์ (บทความ) ปกติที่มีค่าฟิลด์ post_type เฉพาะในฐานข้อมูล ในโพสต์ทั่วไป ฟิลด์ post_type จะมีค่า <b>โพสต์</b>, หน้ามีความสำคัญ <b>หน้าหนังสือ</b>และอื่น ๆ อย่างไรก็ตาม ขณะนี้เราสามารถสร้างประเภทของเราเองเพื่อระบุเนื้อหาเฉพาะที่มีอยู่ในโพสต์ได้ คุณสามารถสร้างประเภทโพสต์แบบกำหนดเองสำหรับหนังสือ ภาพยนตร์ เรื่องตลก ผลิตภัณฑ์ และอื่นๆ ได้ <br>หากทำอย่างถูกต้อง คุณสามารถบรรลุผลลัพธ์ต่อไปนี้ได้โดยใช้โค้ดเพียงไม่กี่บรรทัด:</p> <ul><li>วางประเภทที่กำหนดเองบนแผงหลักของพื้นที่ผู้ดูแลระบบด้วยรายการเมนูย่อย: รายการของรายการทั้งหมดที่มีประเภทนี้และสร้างรายการใหม่ด้วยประเภทนี้</li> <li>สร้างที่เก็บถาวรของโพสต์ประเภทนี้นั่นคือทำสิ่งที่คล้ายกับหน้าหลักสำหรับประเภทที่กำหนดเอง</li> <li>สร้างหมวดหมู่และแท็กที่สามารถเข้าถึงได้ตามประเภทโพสต์ที่กำหนดเอง รวมถึงการจัดหมวดหมู่ที่กำหนดเอง</li> </ul><p>เนื้อหาประเภทต่างๆ มีข้อกำหนดข้อมูลที่แตกต่างกัน สำหรับโพสต์ทั่วไป คุณจะต้องระบุผู้เขียน หมวดหมู่ และวันที่ สำหรับบันทึกประเภท "หนังสือ" ฉันต้องการระบุผู้แต่งหนังสือ จำนวนหน้า ประเภท ผู้จัดพิมพ์ และข้อมูลเฉพาะอื่นๆ ซึ่งสามารถทำได้ง่ายๆ โดยใช้พื้นที่ที่กำหนดเอง (เมตาบ็อกซ์) สำหรับการป้อนข้อมูล</p> <p>— พื้นที่สำหรับการป้อนข้อมูลเพิ่มเติมโดยตรงบนหน้าการสร้างบันทึก พื้นที่เหล่านี้ช่วยให้ทำงานกับประเภทโพสต์ที่กำหนดเองได้ง่ายขึ้น</p><p><img src='https://i0.wp.com/xozblog.ru/wp-content/uploads/2012/11/meta-boxes.jpg' align="center" height="202" width="299" loading=lazy loading=lazy><br></p> <h3>การทำงานกับประเภทโพสต์ที่กำหนดเอง</h3> <p>หากต้องการสร้างและใช้ประเภทโพสต์ที่กำหนดเองอย่างมีประสิทธิภาพ คุณควรทำความคุ้นเคยกับสิ่งต่อไปนี้:</p> <ul><li>การสร้างประเภทโพสต์ที่กำหนดเอง</li> <li>การสร้างอนุกรมวิธานแบบกำหนดเอง</li> <li>การสร้างพื้นที่ข้อมูลที่กำหนดเอง</li> </ul><h4>การสร้างประเภทโพสต์ที่กำหนดเอง</h4> <p>สิ่งแรกที่คุณต้องทำคือสร้างประเภทโพสต์ที่กำหนดเอง ตามหลักการแล้ว คุณจะต้องสร้างปลั๊กอินเพื่อจัดการประเภทโพสต์แบบกำหนดเอง แต่คุณสามารถใช้ไฟล์ Functions.php ของธีมของคุณได้</p> <table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><p>1<br>2<br>3<br>4<br>5<br></p> </td><td><p><br>$args = อาร์เรย์ () ; <br>} <br></p> </td> </tr></tbody></table><p>นี่เป็นรูปแบบที่ง่ายที่สุดในการสร้างประเภทที่แทบไม่มีการตั้งค่าใดๆ เพื่อพัฒนาประเภทโพสต์ใหม่ของเรา เราจะใช้ตัวเลือกที่ใช้บ่อยที่สุดและเพิ่มลงในอาร์เรย์ $args ที่ว่างเปล่าก่อนหน้านี้</p> <table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><p>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>11<br>12<br>13<br>14<br>15<br>16<br>17<br>18<br>19<br>20<br>21<br>22<br>23<br>24<br>25<br>26<br>27<br></p> </td><td><p>ฟังก์ชั่น my_custom_post_product() ( <br>$labels = อาร์เรย์ ( <br>"name" => _x( "Products" , "ประเภทโพสต์ชื่อทั่วไป" ) , <br>"singular_name" => _x( "Product" , "ประเภทโพสต์ชื่อเอกพจน์" ) , <br>"add_new" => _x( "เพิ่มใหม่" , "ผลิตภัณฑ์" ) , <br>"add_new_item" => __( <span>"เพิ่มผลิตภัณฑ์ใหม่"</span> ) , <br>"edit_item" => __( <span>"แก้ไขสินค้า"</span> ) , <br>"new_item" => __( "ผลิตภัณฑ์ใหม่") , <br>"all_items" => __( "สินค้าทั้งหมด") , <br>"view_item" => __( <span>"ดูสินค้า"</span> ) , <br>"search_items" => __( "ค้นหาผลิตภัณฑ์") , <br>"not_found" => __( <span>"ไม่พบสินค้า"</span> ) , <br>"not_found_in_trash" => __( <span>"ไม่มีการนำสินค้าออก"</span> ) , <br>"parent_item_colon" => "" , <br>"menu_name" => "ผลิตภัณฑ์" <br>) ; <br>$args = อาร์เรย์ ( <br>"ฉลาก" => $ฉลาก , <br>"คำอธิบาย" => <span>"ประเภทบันทึกผลิตภัณฑ์แบบกำหนดเอง"</span>, <br>"สาธารณะ" => จริง , <br>"menu_position" => 5 , <br>"supports" => array ("title" , "editor" , "thumbnail" , "excerpt" , "comments" , "product_category" ) , <br>"has_archive" => จริง , <br>) ; <br>register_post_type( "ผลิตภัณฑ์" , $args ) ; <br>} <br>add_action( "init" , "my_custom_post_product" ) ;</p> </td> </tr></tbody></table> <ul><li><b>ฉลาก</b>— อาร์เรย์ของป้ายกำกับนี้ใช้เพื่ออธิบายประเภทโพสต์แบบกำหนดเองที่สร้างขึ้นในหัวข้อ/li></li><li><b>คำอธิบาย</b>- สรุปประเภทโพสต์แบบกำหนดเองที่กำลังสร้าง ทำหน้าที่อะไร และเหตุใดเราจึงใช้งาน</li> <li><b>สาธารณะ</b>— จะใช้ประเภทที่กำหนดเองต่อสาธารณะหรือไม่ และจะแสดงในพื้นที่บริหารหรือไม่ ในกรณีนี้ความจริงได้ถูกสถาปนาแล้ว</li> <li><b>เมนู_ตำแหน่ง</b>— ตำแหน่งของรายการเมนูประเภทของเราบนแผงผู้ดูแลระบบหลัก ค่า 5 หมายความว่ารายการจะถูกติดตั้งทันทีหลังจากรายการเมนู "บันทึก" หาก 10 หมายถึงหลังจากรายการ "ไฟล์สื่อ" เป็นต้น</li> <li><b>รองรับ</b>— ตัวเลือกนี้มีอาร์เรย์ที่อธิบายฟิลด์ที่เราสามารถแก้ไขได้ในหน้าการสร้างบันทึก นั่นคือชื่อเรื่อง - ช่องสำหรับป้อนชื่อของโพสต์จะปรากฏขึ้น ตัวแก้ไข - พื้นที่ข้อความจะปรากฏขึ้นเพื่อป้อนข้อความของโพสต์ ฯลฯ นอกจากนี้ ยังมีการระบุอนุกรมวิธานที่กำหนดเองที่ใช้ product_category อีกด้วย</li> <li><b>has_archive</b>- หากตั้งค่าเป็นจริง กฎการเขียนซ้ำจะถูกสร้างขึ้น เพื่อให้คุณรับรายการบันทึกประเภทของเราได้ที่ http://mysite.com/product/</li> </ul><p><br><img src='https://i0.wp.com/xozblog.ru/wp-content/uploads/2012/11/custom-post-types-1.png' align="center" width="100%" loading=lazy loading=lazy><br></p> <p>หลังจากติดตั้งโค้ดนี้ในไฟล์ function.php แล้ว คุณจะเห็นเมนูสำหรับประเภทโพสต์แบบกำหนดเอง ขณะนี้คุณสามารถเพิ่มบันทึกและดูรายการบันทึกได้แล้ว</p> <p>อย่างไรก็ตาม ตัวเลือกเหล่านี้ไม่ใช่ทั้งหมดสำหรับอาร์เรย์ของอาร์กิวเมนต์ คุณจะพบรายการตัวเลือกทั้งหมดและความสามารถทั้งหมดของประเภทที่กำหนดเอง</p> <h4>การแจ้งเตือนแบบโต้ตอบ</h4> <p>WordPress สร้างข้อความบางอย่างที่กระตุ้นโดยการกระทำของผู้ใช้ นอกจากนี้เรายังสามารถสร้างข้อความที่คล้ายกันเพื่อแจ้งเตือนผู้ใช้เมื่อทำงานกับประเภทต่างๆ ทำได้โดย post_updated_messages</p> <table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><p>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>11<br>12<br>13<br>14<br>15<br>16<br>17<br>18<br></p> </td><td><p>ฟังก์ชั่น my_updated_messages( $messages ) ( <br>$post ทั่วโลก, $post_ID ; <br>$messages["product"] = array( <br>0 => "" , <br>1 => วิ่งเร็ว ( __( <span>"สินค้าอัพเดท ดู"</span><br>2 => __() , <br>3 => __(<span>"อัปเดตฟิลด์ที่กำหนดเองแล้ว"</span>) , <br>4 => __(<span>"สินค้าอัพเดทแล้ว"</span>) , <br>5 => isset ($_GET [ "การแก้ไข" ] ) ? วิ่งเร็ว ( __( <span>"ผลิตภัณฑ์ได้รับการกู้คืนเพื่อแก้ไขจาก %s"</span>) , wp_post_revision_title( (int) $_GET [ "การแก้ไข" ] , false ) ) : false , <br>6 => วิ่งเร็ว ( __( <span>"สินค้าเผยแพร่ ดู"</span>) , esc_url( get_permalink($post_ID ) ) ) , <br>7 => __(<span>"บันทึกผลิตภัณฑ์แล้ว"</span>) , <br>8 => วิ่งเร็ว ( __( <span>"สินค้าจัดส่งแล้ว วิว"</span><br>9 => วิ่งเร็ว ( __( <span>“ผลิตภัณฑ์มีการวางแผนสำหรับ: <strong>%1$s</strong>. ดู"</span>) , date_i18n( __( "M j, Y @ G:i" ) , strtotime ( $post -> post_date ) ) , esc_url( get_permalink($post_ID ) ) , <br>10 => วิ่งเร็ว ( __( <span>"อัปเดตร่างผลิตภัณฑ์ ดู"</span>) , esc_url( add_query_arg( "preview" , "true" , ​​​​get_permalink($post_ID ) ) ) , <br>) ; <br>ส่งคืนข้อความ $; <br>} <br>add_filter( "post_updated_messages" , "my_updated_messages" ) ;</p> </td> </tr></tbody></table><p>โปรดทราบว่าคุณสามารถตั้งค่าการแจ้งเตือนสำหรับโพสต์ที่กำหนดเองทุกประเภทได้โดยใช้ฟีเจอร์นี้ หากคุณไม่ระบุชื่อประเภท ระบบจะใช้การแจ้งเตือนสำหรับประเภทที่กำหนดเองทั้งหมด</p><p><img src='https://i2.wp.com/xozblog.ru/wp-content/uploads/2012/11/custom-post-types-2.png' align="center" width="100%" loading=lazy loading=lazy><br></p> <p>เบาะแสตามบริบทไม่ค่อยมีการนำไปใช้และใช้งาน ในฐานะผู้ใช้ ฉันไม่เคยใช้ฟีเจอร์นี้ แต่ฉันแน่ใจว่ามีคนใช้ฟีเจอร์นี้ เรามาสร้างความช่วยเหลือตามบริบทกันดีกว่า <br>คำแนะนำตามบริบทอยู่ที่มุมขวาบน ใกล้กับแท็บการตั้งค่าหน้าจอ</p> <table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><p>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>11<br>12<br>13<br>14<br>15<br>16<br></p> </td><td><p>ฟังก์ชั่น my_contextual_help( $contextual_help , $screen_id , $screen ) ( <br>ถ้า ( "แก้ไขผลิตภัณฑ์" == $screen -> id ) (</p><p>$contextual_help = <span>"<h2>สินค้า</h2><br> <p>หน้านี้ประกอบด้วยรายการผลิตภัณฑ์ทั้งหมดที่ขายบนเว็บไซต์ รายการจะเรียงตามลำดับเวลาย้อนกลับ โดยรายการสุดท้ายที่แสดงเป็นรายการที่เราเพิ่มก่อน</p> <br> <p>คุณสามารถดู/แก้ไขรายละเอียดของแต่ละผลิตภัณฑ์ได้โดยคลิกที่ชื่อผลิตภัณฑ์ หรือคุณสามารถดำเนินการแบบกลุ่มได้โดยใช้เมนูแบบเลื่อนลงโดยเลือกหลายรายการ</p>" </span>; </p><p>) elseif ( "ผลิตภัณฑ์" == $screen -> id ) (</p><p>$contextual_help = <span>"<h2>การสร้าง/แก้ไขผลิตภัณฑ์</h2><br> <p>หน้านี้ช่วยให้คุณสร้างผลิตภัณฑ์หรือแก้ไขข้อมูลที่มีอยู่เกี่ยวกับผลิตภัณฑ์ได้ โปรดอย่าลืมกรอกข้อมูลในช่องเพิ่มเติม</p>" </span>; </p><p>} <br>กลับ $contextual_help ; <br>} <br>add_action( "contextual_help" , "my_contextual_help" , 10 , 3 ) ;</p> </td> </tr></tbody></table><p>เพื่อที่จะแสดงคำแนะนำเครื่องมือดังกล่าว เราจำเป็นต้องทราบรหัสหน้าจอ หากในระหว่างการสร้างคุณจำเป็นต้องค้นหารหัสหน้าจอ ให้ทำดังนี้:</p> <table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"> </td><td><p>เสียงสะท้อน $ หน้าจอ -> รหัส ;</p> </td> </tr></tbody></table><p><br><img src='https://i1.wp.com/xozblog.ru/wp-content/uploads/2012/11/custom-post-types-3.png' align="center" width="100%" loading=lazy loading=lazy><br></p> <h3>อนุกรมวิธานที่กำหนดเอง</h3> <p>สำหรับบล็อกทั่วไป หมวดหมู่และแท็กก็เพียงพอที่จะสร้างโครงสร้างองค์กรได้ แม้ว่าประเภทโพสต์แบบกำหนดเองจะไม่เพียงพอเสมอไป อนุกรมวิธานแบบกำหนดเองสามารถแก้ปัญหานี้ได้ ในกรณีของเรา อนุกรมวิธานที่เรียกว่า "หมวดหมู่ผลิตภัณฑ์" ซึ่งใช้สำหรับโพสต์ที่มีประเภท "ผลิตภัณฑ์" แบบกำหนดเองเท่านั้น</p> <p>กระบวนการสร้างอนุกรมวิธานแบบกำหนดเองนั้นแทบจะเหมือนกับการสร้างประเภทโพสต์แบบกำหนดเอง ลองดูตัวอย่างของเรา:</p> <table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><p>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>11<br>12<br>13<br>14<br>15<br>16<br>17<br>18<br>19<br>20<br>21<br></p> </td><td><p>ฟังก์ชั่น my_taxonomies_product() ( <br>$labels = อาร์เรย์ ( <br>"ชื่อ" => _x( <span>"หมวดหมู่สินค้า"</span>, "ชื่อสามัญอนุกรมวิธาน") , <br>"singular_name" => _x( <span>"ประเภทสินค้า"</span>, "ชื่อเอกพจน์อนุกรมวิธาน") , <br>"search_items" => __( <span>"ค้นหาหมวดหมู่สินค้า"</span> ) , <br>"all_items" => __( <span>"หมวดหมู่ผลิตภัณฑ์ทั้งหมด"</span> ) , <br>"parent_item" => __( <span>"หมวดหมู่ผลิตภัณฑ์หลัก"</span> ) , <br>"parent_item_colon" => __( <span>"หมวดหมู่ผลิตภัณฑ์หลัก:"</span> ) , <br>"edit_item" => __( <span>"แก้ไขหมวดหมู่สินค้า"</span> ) , <br>"update_item" => __( <span>"อัพเดทหมวดหมู่สินค้า"</span> ) , <br>"add_new_item" => __( <span>"เพิ่มหมวดสินค้าใหม่"</span> ) , <br>"new_item_name" => __( <span>"หมวดหมู่ผลิตภัณฑ์ใหม่"</span> ) , <br>"menu_name" => __( <span>"หมวดหมู่สินค้า"</span> ) , <br>) ; <br>$args = อาร์เรย์ ( <br>"ฉลาก" => $ฉลาก , <br>"ลำดับชั้น" => จริง , <br>) ; <br>register_taxonomy( "product_category" , "ผลิตภัณฑ์" , $args ) ; <br>} <br>add_action( "init" , "my_taxonomies_product" , 0 ) ;</p> </td> </tr></tbody></table><p>เช่นเดียวกับเมื่อสร้างประเภทที่กำหนดเอง เราได้สร้างอาร์เรย์ป้ายกำกับ และระบุว่าโครงสร้างลำดับชั้นมีความเกี่ยวข้องกับอนุกรมวิธานที่สร้างขึ้น (เช่น อาจมีองค์ประกอบพาเรนต์และองค์ประกอบย่อย) ซึ่งเป็นเรื่องปกติสำหรับหมวดหมู่ในโพสต์ทั่วไป มิฉะนั้น หากโครงสร้างไม่เป็นลำดับชั้น แท็กธรรมดาจะถูกสร้างขึ้น คุณสามารถอ่านเพิ่มเติมเกี่ยวกับอนุกรมวิธาน</p><p><img src='https://i2.wp.com/xozblog.ru/wp-content/uploads/2012/11/custom-post-types-4.png' align="center" width="100%" loading=lazy loading=lazy><br></p> <h3>พื้นที่ข้อมูลเพิ่มเติม</h3> <p>คุณสามารถดูพื้นที่หรือบล็อกเพิ่มเติมสำหรับการป้อนข้อมูล (เมตาบ็อกซ์) ได้ที่หน้าแก้ไขโพสต์ ใครๆ ก็รู้จักมาตรฐาน เช่น การเลือกหมวดหมู่หรือแท็ก นอกจากนี้ในบางหัวข้อจะมีตัวเลือกที่ให้คุณแนบรูปภาพในโพสต์ ฯลฯ</p> <p>เนื่องจากเรากำลังสร้าง "ผลิตภัณฑ์" ประเภทที่กำหนดเอง เราจึงจำเป็นต้องมีราคาของผลิตภัณฑ์อย่างชัดเจน มาดูขั้นตอนการสร้างผลิตภัณฑ์ที่กำหนดเองกัน</p> <p>กระบวนการสร้างสามารถแบ่งออกเป็น 3 ขั้นตอน:</p> <ul><li>คำจำกัดความของบล็อกนั้น</li> <li>การกำหนดเนื้อหา (ฟิลด์ใดที่มีอยู่ในบล็อก)</li> <li>คำอธิบายของอัลกอริทึมสำหรับการประมวลผลข้อมูลที่ป้อน</li> </ul><h4>คำจำกัดความของเมตาบ็อกซ์</h4> <table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><p>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>11<br></p> </td><td><p>add_action( "add_meta_boxes" , "product_price_box" ) ; <br>ฟังก์ชั่น product_price_box() ( <br>add_meta_box( <br>"ผลิตภัณฑ์_ราคา_กล่อง" , <br>__( "ราคาสินค้า" , "myplugin_textdomain" ) , <br>"ผลิตภัณฑ์_ราคา_กล่อง_เนื้อหา" , <br>"ผลิตภัณฑ์" <br>"ด้านข้าง" <br>"สูง" <br>) ; <br>} </p> </td> </tr></tbody></table><p>รหัสข้างต้นสร้างบล็อกที่มีพารามิเตอร์ต่อไปนี้:</p> <ul><li><b>product_price_box</b>- ตัวระบุเฉพาะสำหรับเมตาบ็อกซ์ (ไม่จำเป็นต้องตรงกับชื่อฟังก์ชัน)</li> <li><b>ราคาสินค้า</b>— ชื่อของเมตาบ็อกซ์ที่ผู้ดูแลระบบเห็นบนเพจ</li> <li><b>product_price_box_content</b>— ฟังก์ชั่นที่จะแสดงเนื้อหาของหน้าต่าง</li> <li><b>ผลิตภัณฑ์</b>— ชื่อของประเภทโพสต์แบบกำหนดเองซึ่งมีเมตาบ็อกซ์อยู่</li> <li><b>ด้านข้าง</b>— ตำแหน่งของบล็อกบนหน้า (ด้านข้าง, ปกติหรือขั้นสูง — โดยค่าเริ่มต้น)</li> <li><b>สูง</b>— ลำดับความสำคัญของเมตาบ็อกซ์ (ในกรณีนี้คือ "สูง" บล็อกจะอยู่ที่ด้านบนสุดของแถบด้านข้าง ตัวเลือก: สูง, คอร์, ต่ำหรือค่าเริ่มต้น - โดยค่าเริ่มต้น)</li> </ul><h4>คำจำกัดความของเนื้อหา</h4> <table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><p>1<br>2<br>3<br>4<br>5<br></p> </td><td><p>ฟังก์ชั่น product_price_box_content( $โพสต์ ) ( <br>wp_nonce_field( Plugin_basename( __FILE__ ) , ) ; <br>เสียงสะท้อน <span>"<label for="product_price"></label>" </span>; <br>เสียงสะท้อน <span>"<input type="text" id="product_price" name="product_price" placeholder="ใส่ราคา">" </span>; <br>} </p> </td> </tr></tbody></table><p>เราเพิ่มเพียงช่องเดียวเพื่อป้อนราคาของผลิตภัณฑ์ โปรดทราบว่าชื่อของฟังก์ชันตรงกับค่าของพารามิเตอร์ตัวที่สามเมื่อมีการประกาศ (โค้ดด้านบน)</p> <h4>การประมวลผลข้อมูลที่ป้อน</h4> <p>ขั้นตอนสุดท้ายคือการบันทึกราคาผลิตภัณฑ์ที่ป้อนลงในฐานข้อมูล</p> <table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><p>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>11<br>12<br>13<br>14<br>15<br>16<br>17<br>18<br>19<br></p> </td><td><p>add_action( "save_post" , "product_price_box_save" ) ; <br>ฟังก์ชั่น product_price_box_save( $post_id ) (</p><p>ถ้า (กำหนด ("DOING_AUTOSAVE") && DOING_AUTOSAVE) <br>กลับ ;</p><p>ถ้า ( ! wp_verify_nonce( $_POST [ <span>"product_price_box_content_nonce"</span>] , Plugin_basename( __FILE__ ) ) ) <br>กลับ ;</p><p>ถ้า ( "หน้า" == $_POST [ "post_type" ] ) ( <br>ถ้า ( ! current_user_can( "edit_page" , $post_id ) ) <br>กลับ ; <br>) อื่น ( <br>ถ้า ( ! current_user_can( "edit_post" , $post_id ) ) <br>กลับ ; <br>} <br>$product_price = $_POST [ "product_price" ] ; <br>update_post_meta( $post_id , "product_price" , $product_price ) ; <br>} </p> </td> </tr></tbody></table><p>ฟังก์ชั่นส่วนใหญ่คือการตรวจสอบ ก่อนอื่น มีการตรวจสอบการบันทึกอัตโนมัติ ราคาจะไม่ถูกบันทึกจนกว่าจะกดปุ่มบันทึกหรืออัปเดต จากนั้นจะมีการตรวจสอบสิทธิ์การเข้าถึงเพื่อแก้ไขข้อมูลของโพสต์นี้และหลังจากนั้นโดยใช้ฟังก์ชัน update_post_meta ราคาจะถูกป้อนลงในฐานข้อมูล</p> <h3>แสดงโพสต์ประเภทที่สร้างขึ้นในบล็อก</h3> <p>เราได้ผ่านทุกขั้นตอนของการสร้างประเภทโพสต์แบบกำหนดเอง สิ่งที่เหลืออยู่คือการใช้ประโยชน์จากผลงานของเราและสร้างการแสดงโพสต์บนบล็อกตามอนุกรมวิธานที่เราสร้างขึ้น</p> <p>เนื่องจากในระหว่างการสร้างประเภทที่กำหนดเอง เราระบุเป็น true สำหรับพารามิเตอร์ has_archive รายการบันทึกของประเภทผลิตภัณฑ์จึงมีอยู่ที่ http://mysite.com/product/</p> <p>ไฟล์ archive-.php (ในกรณีของเรา archive-product.php) ใช้สำหรับการแสดงผลหากมีอยู่ มิฉะนั้น archive.php จะถูกใช้สำหรับการแสดงผล และหากไฟล์ดังกล่าวไม่อยู่ในธีม ก็จะใช้ ) <br>) ; <br>$products = WP_Query ใหม่( $args ) ; <br>ถ้า ( $products -> have_posts () ) ( <br>ในขณะที่ ( $products -> have_posts () ) ( <br>$ผลิตภัณฑ์ -> the_post () ; <br>?> <br>< h1> <?php the_title() ?> </ h1> <br>< div class = "content" > <br><?php the_content() ?> <br></ div> <br><?php <br>} <br>} <br>อื่น( <br>เสียงสะท้อน <span>“โอ้ ไม่ ไม่พบอาหาร!”</span>; <br>} <br>?> </p> <h4>การแสดงราคา</h4> <p>ข้อมูลเพิ่มเติมที่ป้อนในกรณีของเราคือราคาของผลิตภัณฑ์ สามารถดึงข้อมูลได้โดยใช้ฟังก์ชัน get_post_meta() เนื่องจากเราใช้ช่อง product_price เพิ่มเติม เพื่อให้ได้ค่าราคา:</p> <h3>ปลั๊กอินสำหรับสร้างประเภทโพสต์ที่กำหนดเอง</h3> <p>หากคุณไม่มั่นใจในความสามารถในการเขียนโปรแกรมของคุณ คุณสามารถค้นหาโซลูชันสำเร็จรูป (ปลั๊กอิน) และใช้งานได้เสมอ ประเภทที่กำหนดเองก็ไม่มีข้อยกเว้น เสียบเข้าไป <b>WCK ผู้สร้างประเภทโพสต์แบบกำหนดเอง</b>ช่วยให้คุณสร้างประเภทโพสต์ที่กำหนดเองสำหรับ WordPress ได้อย่างง่ายดายโดยไม่ต้องมีความรู้ด้านการเขียนโค้ด</p> <p>หมวดหมู่เริ่มต้นใช้สำหรับโพสต์เท่านั้น อย่างไรก็ตาม ในบางสถานการณ์ คุณอาจต้องการใช้กับประเภทโพสต์แบบกำหนดเอง ในบทความนี้เราจะบอกวิธีการทำเช่นนี้</p> <h4>วิธีการปลั๊กอิน</h4> <p>สำหรับผู้ใช้ระดับเริ่มต้น เราขอแนะนำให้ใช้ปลั๊กอิน UI ประเภทโพสต์แบบกำหนดเอง เพื่อสร้างประเภทโพสต์แบบกำหนดเอง การใช้ปลั๊กอินนี้ ช่วยให้คุณสามารถเชื่อมโยงประเภทโพสต์ที่กำหนดเองกับอนุกรมวิธานในตัวหรือแบบกำหนดเอง รวมถึงหมวดหมู่ด้วย หลังจากติดตั้งปลั๊กอินแล้ว ให้ไปที่ CPT UI » เพิ่ม/แก้ไขประเภทโพสต์ เพื่อสร้างประเภทโพสต์ที่กำหนดเองใหม่หรือแก้ไขประเภทที่มีอยู่</p> <p>เลื่อนลงไปที่ตัวเลือกขั้นสูงแล้วคุณจะเห็นตัวเลือก Taxnomies ในตัว ทำเครื่องหมายที่ช่องถัดจากหมวดหมู่และบันทึกประเภทโพสต์ของคุณ</p> <p><img src='https://i0.wp.com/coma.lv/wp-content/uploads/2016/11/enablecategoriesforcpt.jpg' align="center" width="100%" loading=lazy loading=lazy></p> <h4>การเพิ่มหมวดหมู่สำหรับประเภทโพสต์ที่กำหนดเองด้วยตนเอง</h4> <p>หากคุณสร้างประเภทโพสต์แบบกำหนดเองโดยการเพิ่มโค้ดในไฟล์ function.php คุณจะต้องเปลี่ยนโค้ดนั้นเพื่อเพิ่มหมวดหมู่เป็นแบบอนุกรมวิธานที่รองรับ สิ่งที่คุณต้องทำคือเพิ่มบรรทัดนี้ลงในอาร์กิวเมนต์ประเภทโพสต์ที่คุณกำหนดเอง:</p> <p><i>'taxonomies' => อาร์เรย์ ('หมวดหมู่'),</i></p> <p>อาจเป็นไปได้ว่าคุณมีบรรทัดนี้ในโค้ดของคุณพร้อมกับอนุกรมวิธานที่กำหนดเองอื่นๆ อยู่แล้ว หากเป็นเช่นนั้น คุณเพียงแค่ต้องเพิ่มลูกน้ำหลังจากนั้นและเพิ่มหมวดหมู่:</p> <p><i>'taxonomies' => อาร์เรย์ ('หัวข้อ', 'หมวดหมู่'),</i></p> <p>นี่คือตัวอย่างโค้ดทั้งหมดที่เราสร้างประเภทโพสต์แบบกำหนดเองที่เรียกว่า "ภาพยนตร์" พร้อมรองรับหมวดหมู่ในตัวทั้งหมด</p><p>ฟังก์ชั่น 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);</p><h4>การแสดงโพสต์หลายประเภทในหน้าหมวดหมู่</h4> <p>ตามค่าเริ่มต้น หน้าหมวดหมู่บนไซต์ WordPress จะแสดงประเภทโพสต์มาตรฐาน หากคุณต้องการให้ประเภทโพสต์ของคุณปรากฏในหน้าหมวดหมู่เดียวกันกับโพสต์เริ่มต้น คุณจะต้องเพิ่มโค้ดต่อไปนี้ลงในไฟล์ Functions.php ของคุณ:</p><p>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; ) )</p><p>อย่าลืมเปลี่ยนภาพยนตร์เป็นชื่อประเภทโพสต์ที่คุณกำหนดเอง</p> <p><i>ความเชี่ยวชาญพิเศษของเราคือการพัฒนาและการสนับสนุนเว็บไซต์ WordPress ติดต่อขอคำปรึกษาฟรี - ,</i></p> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy loading=lazy>");</script> </div> <div class="clear"></div> </div> </article> <div class='yarpp-related'> <section id="related_posts"> <div class="block-head"> <span>ข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อ</span> <div class="stripe-line"></div> </div> <div class="post-listing"> <div class="related-item"> <div class="post-thumbnail tie-appear replacemy" data="post_7839"> <img width="195" height="110" src="/uploads/ebe5b7cf62ddb7529304c174faee11a6.jpg" class="attachment-tie-related size-tie-related wp-post-image" alt="การทดสอบประสิทธิภาพ" / loading=lazy loading=lazy></div> <a class="post_7839" href="https://qzoreteam.ru/th/testirovanie-proizvoditelnosti-grand-theft-auto-v-grafika/">การทดสอบประสิทธิภาพ</a></div> <div class="related-item"> <div class="post-thumbnail tie-appear replacemy" data="post_7839"> <img width="195" height="110" src="/uploads/2bbd0911f42638a456fe6422669f89a1.jpg" class="attachment-tie-related size-tie-related wp-post-image" alt="การลงทะเบียนหน้าส่วนตัวบนโซเชียลเน็ตเวิร์ก Facebook" / loading=lazy loading=lazy></div> <a class="post_7839" href="https://qzoreteam.ru/th/kak-sdelat-novuyu-registraciyu-v-feisbuk-registraciya-lichnoi/">การลงทะเบียนหน้าส่วนตัวบนโซเชียลเน็ตเวิร์ก Facebook</a></div> <div class="related-item"> <div class="post-thumbnail tie-appear replacemy" data="post_7839"> <img width="195" height="110" src="/uploads/6511d5da665afbd94f5985e4502b1150.jpg" class="attachment-tie-related size-tie-related wp-post-image" alt="ฉันไม่สามารถลงทะเบียนบน Facebook ได้ - สาเหตุคืออะไร" / loading=lazy loading=lazy></div> <a class="post_7839" href="https://qzoreteam.ru/th/mozhno-li-voiti-v-feisbuk-bez-registracii-ne-poluchaetsya-zaregistrirovatsya-v/">ฉันไม่สามารถลงทะเบียนบน Facebook ได้ - สาเหตุคืออะไร</a></div> <div class="related-item"> <div class="post-thumbnail tie-appear replacemy" data="post_7839"> <img width="195" height="110" src="/uploads/70832c410f6bed31d79150308d0f5920.jpg" class="attachment-tie-related size-tie-related wp-post-image" alt="ยานพาหนะและพื้นผิวสำหรับ Grand Theft Auto San Andreas" / loading=lazy loading=lazy></div> <a class="post_7839" href="https://qzoreteam.ru/th/mashiny-dlya-gta-samp-transportnye-sredstva-i-tekstury-dlya-grand-theft-auto/">ยานพาหนะและพื้นผิวสำหรับ Grand Theft Auto San Andreas</a></div> <div class="related-item"> <div class="post-thumbnail tie-appear replacemy" data="post_7839"> <img width="195" height="110" src="/uploads/07978dd6719c877fd55dbb1502287170.jpg" class="attachment-tie-related size-tie-related wp-post-image" alt="ดาวน์โหลด autoclicker สำหรับ minecraft ด้วยเมาส์" / loading=lazy loading=lazy></div> <a class="post_7839" href="https://qzoreteam.ru/th/skachat-avtokliker-dlya-minecraft-myshkoi-avtokliker-dlya-myshi-avtokliker/">ดาวน์โหลด autoclicker สำหรับ minecraft ด้วยเมาส์</a></div> <div class="related-item"> <div class="post-thumbnail tie-appear replacemy" data="post_7839"> <img width="195" height="110" src="/uploads/bd003dc68f273f30f542bb856c7ebaff.jpg" class="attachment-tie-related size-tie-related wp-post-image" alt="คะแนนสมาร์ทโฟนที่มีกล้องดี ลักษณะของเซ็นเซอร์ทั้ง 4 ตัว" / loading=lazy loading=lazy></div> <a class="post_7839" href="https://qzoreteam.ru/th/reiting-smartfonov-s-horoshei-kameroi-reiting-smartfonov-s-horoshei/">คะแนนสมาร์ทโฟนที่มีกล้องดี ลักษณะของเซ็นเซอร์ทั้ง 4 ตัว</a></div> </div> </section> </div> <div id="comments"> <ol class="commentlist"> <div class='rreekk' rel='15'> <div id="smartrotator_ad_4" onclick="yaCounter40492595.reachGoal ('tizercommentbefore1'); return true;"></div> </div> </ol> <div class="clear"></div> <div id="respond" class="comment-respond"> </div> </div> </div> <aside id="sidebar"> <div class="theiaStickySidebar"> <div class="execphpwidget"> <div id="text-4" class="widget widget_text"> <div class="widget-top"> <span>มีประโยชน์</span> <div class="stripe-line"></div> </div> <div class="widget-container"> <div class="textwidget"> <style> .wpp-list li img { -webkit-border-radius: 65px; -moz-border-radius: 65px; border-radius: 65px; } .wpp-list li .post-views { display: block; margin-left: 70px; color: #828283; font-size: 12px; } .wpp-list li .post-views i { font-size: 13px; } .wpp-list li { line-height: 22px !important; } .replacemy { cursor: pointer; } } </style> <ul class="wpp-list"> <li> <div class="replacemy"><img src="/uploads/4c8e795d0523c87ff2a50a2508ac2797.jpg" width="65" height="65" title="จะเปิดหรือปิดการใช้งานบรรทัดที่สองได้อย่างไร?" alt="จะเปิดหรือปิดการใช้งานบรรทัดที่สองได้อย่างไร?" class="wpp-thumbnail wpp_cached_thumb wpp_featured" / loading=lazy loading=lazy></div><a href="https://qzoreteam.ru/th/kak-podklyuchit-vtoruyu-liniyu-na-tele2-kak-vklyuchit-otklyuchit-vtoruyu-liniyu/" class=""><br>จะเปิดหรือปิดการใช้งานบรรทัดที่สองได้อย่างไร?</a></li> <li> <div class="replacemy"><img src="/uploads/2cde06f59bd19ef62c37b42fa5d5d507.jpg" width="65" height="65" title="เกมสำหรับเด็ก เกมในหัวข้อตารางสูตรคูณ" alt="เกมสำหรับเด็ก เกมในหัวข้อตารางสูตรคูณ" class="wpp-thumbnail wpp_cached_thumb wpp_featured" / loading=lazy loading=lazy></div><a href="https://qzoreteam.ru/th/detskie-igry-detskie-igry-igra-na-temu-tablica-umnozheniya/" class=""><br>เกมสำหรับเด็ก เกมในหัวข้อตารางสูตรคูณ</a></li> <li> <div class="replacemy"><img src="/uploads/4d239e8eec8de6606db685170dbe84bd.jpg" width="65" height="65" title="วิธีตั้งค่าหมายเลขหน้าใน Word?" alt="วิธีตั้งค่าหมายเลขหน้าใน Word?" class="wpp-thumbnail wpp_cached_thumb wpp_featured" / loading=lazy loading=lazy></div><a href="https://qzoreteam.ru/th/kak-legko-postavit-numeraciyu-stranic-v-vorde-kak-postavit-numeraciyu-stranic-v/" class=""><br>วิธีตั้งค่าหมายเลขหน้าใน Word?</a></li> <li> <div class="replacemy"><img src="/uploads/e9a0947b5b58eff6527cc4ca282f2e69.jpg" width="65" height="65" title="การได้รับสิทธิ์รูทของ HTC Desire V" alt="การได้รับสิทธิ์รูทของ HTC Desire V" class="wpp-thumbnail wpp_cached_thumb wpp_featured" / loading=lazy loading=lazy></div><a href="https://qzoreteam.ru/th/root-desire-v-poluchenie-root-prav-na-htc-desire-v-poluchenie-root-rut-prav-na-htc-desire/" class=""><br>การได้รับสิทธิ์รูทของ HTC Desire V</a></li> <li> <div class="replacemy"><img src="/uploads/e54918d5526e10b8fb87d3451e710cd6.jpg" width="65" height="65" title="เฟิร์มแวร์สำหรับ vega explay วิธีแฟลช vega explay บน Android 5" alt="เฟิร์มแวร์สำหรับ vega explay วิธีแฟลช vega explay บน Android 5" class="wpp-thumbnail wpp_cached_thumb wpp_featured" / loading=lazy loading=lazy></div><a href="https://qzoreteam.ru/th/proshivka-dlya-vega-explay-proshivka-dlya-vega-explay-kak-proshit-eksplei-vega-na/" class=""><br>เฟิร์มแวร์สำหรับ vega explay วิธีแฟลช vega explay บน Android 5</a></li> </ul> </div> </div> </div> </div> </div> <div> </div> </aside> <div class="clear"></div> </div> <footer id="theme-footer"> <div id="footer-widget-area" class="wide-narrow-2c"><div id="footer-first" class="footer-widgets-box"><div id="text-2" class="footer-widget widget_text"><div class="footer-widget-top"></div><div class="footer-widget-container"><div class="textwidget"> <p>ทุกอย่างเกี่ยวกับเทคโนโลยีที่ทันสมัย ข้อผิดพลาด เกม. รายละเอียด เทคนิค. อินเทอร์เน็ต <p></p> </div></div></div></div><div id="footer-second" class="footer-widgets-box"><div id="text-3" class="footer-widget widget_text"> <div class="footer-widget-top"></div> <div class="footer-widget-container"> <div class="textwidget"><a href="https://qzoreteam.ru/th/sitemap.xml">แผนผังเว็บไซต์</a></div> </div> </div><div id="text-7" class="footer-widget widget_text"><div class="footer-widget-top"></div><div class="footer-widget-container"><div class="textwidget"><br> <a href="https://qzoreteam.ru/th/feedback/">ข้อเสนอแนะ</a> </div></div></div></div></div><div class="clear"></div> </footer> <div class="clear"></div> <div class="footer-bottom"> <div class="container"> <div class="alignright"></div> <div class="alignleft">© ลิขสิทธิ์ 2017 https://qzoreteam.ru</div> <div class="clear"></div> </div> </div> </div> </div> </div> <div id="topcontrol" class="fa fa-angle-up" title="ไปที่ด้านบนของหน้า"></div> <div id="fb-root"></div> <script type="text/javascript"> jQuery(function($) { $(document).on("click", ".pseudo-link", function() { window.open($(this).data("uri")); }); }); </script> <script type='text/javascript'> /* */ var tocplus = { "smooth_scroll": "1", "visibility_show": "\u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c", "visibility_hide": "\u0441\u043a\u0440\u044b\u0442\u044c", "width": "310px" }; /* */ </script> <script type='text/javascript' src='https://qzoreteam.ru/wp-content/plugins/table-of-contents-plus/front.min.js'></script> <script type='text/javascript' src='https://qzoreteam.ru/wp-content/plugins/wp-polls/polls-js.js'></script> <script type='text/javascript' src='https://qzoreteam.ru/wp-content/plugins/wp-postratings/js/postratings-js.js'></script> <script type='text/javascript'> /* */ var tie = { "mobile_menu_active": "true", "mobile_menu_top": "", "lightbox_all": "", "lightbox_gallery": "", "woocommerce_lightbox": "", "lightbox_skin": "dark", "lightbox_thumb": "vertical", "lightbox_arrows": "true", "sticky_sidebar": "", "is_singular": "1", "SmothScroll": "true", "reading_indicator": "", "lang_no_results": "\u041d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c", "lang_results_found": "\u041d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b" }; /* */ </script> <script type='text/javascript' src='https://qzoreteam.ru/wp-content/themes/pochk/js/tie-scripts.js'></script> <script type='text/javascript' src='https://qzoreteam.ru/wp-content/themes/pochk/js/ilightbox.packed.js'></script> <script type='text/javascript' src='/wp-includes/js/comment-reply.min.js'></script> <script type='text/javascript' src='/wp-includes/js/wp-embed.min.js'></script> <script type='text/javascript'> /* */ var gglcptch_pre = { "messages": { "in_progress": "\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0434\u043e\u0436\u0434\u0438\u0442\u0435\u0441\u044c \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 Google reCAPTCHA.", "timeout": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c Google reCAPTCHA. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0412\u0430\u0448\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0441\u0435\u0442\u0438 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u044d\u0442\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443." } }; /* */ </script> <script type='text/javascript' src='https://qzoreteam.ru/wp-content/plugins/google-captcha/js/pre-api-script.js'></script> <script type='text/javascript' data-cfasync="false" async="async" defer="defer" src='https://www.google.com/recaptcha/api.js?onload=gglcptch_onload_callback&render=explicit'></script> <script type='text/javascript' src='https://qzoreteam.ru/wp-content/plugins/google-captcha/js/script.js'></script> <script type="text/javascript" src="https://qzoreteam.ru/wp-content/themes/pochk/my/my.js"></script> <script type="text/javascript" src="https://qzoreteam.ru/wp-content/themes/pochk/my/etimer.js"></script> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> </body> </html>