WordPress

คำถาม & คำตอบสำหรับนักพัฒนา WordPress และผู้ดูแลระบบ

2
วิธีรับภาพต้นฉบับโดยใช้ wp_get_attachment_image_src
ฉันต้องการได้ภาพต้นฉบับที่มีความกว้างและความสูงเท่ากับที่อัปโหลด ภาพต้นฉบับของฉันคือ 630 * 370 ใช้ฟังก์ชั่นการโทรต่อไปนี้ฉันได้ภาพขนาดย่อที่ 630 * 198 wp_get_attachment_image_src($PriImgId,array('630','370')); ฉันจะหาได้ที่ 630 * 370

5
setup_postdata () ดูเหมือนจะใช้งานไม่ได้ใช่ไหม
ฉันไม่แน่ใจว่าทำไม แต่ฉันเคยget_posts()ค้นหาข้อมูลบางอย่าง ถ้าอย่างนั้นฉันก็ใช้setup_postdata()... ฉันคิดว่ามันใช้แล้วเพื่อให้ฉันสามารถใช้ฟังก์ชั่นอย่างthe_permalink()อื่นกับโพสต์ข้อมูลใหม่ได้หรือไม่ <?php foreach ($childPosts as $cp) : setup_postdata($cp); ?> <article <?php post_class() ?> id="post-<?php the_ID(); ?>"> <h1><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1> <?php if (has_post_thumbnail()) : ?> <a href="<?php the_permalink() ?>"><?php the_post_thumbnail(($hasOutputNotFeaturedDiv) ? 'thumb-small' : null) ?></a> <?php endif; ?> <?php the_excerpt(); ?> <p class="more"><a href="<?php the_permalink() …
12 get-posts 

7
WP REST API: กรองตามหมวดหมู่ 1 และหมวด 2
ฉันยุ่งกับ REST API และติดอยู่กับสิ่งนี้: ฉันจะกรองบทความในทั้ง cat1 และ cat2 ได้อย่างไร ในตอนนี้?categories[]=45&categories[]=50ส่งคืนใน ID หมวดหมู่ 45 หรือ 50 ฉันจะได้รับโพสต์ใน 45 และ 50 ได้อย่างไร ขอบคุณล่วงหน้า.


4
get_results ใช้ wpdb
ฉันพยายามดึงข้อมูลในฐานข้อมูลของฉัน ฉันต้องการที่จะแสดงทั้งหมดpagesโดยใช้คำสั่งนี้ แต่ฉันว่างเปล่าARRAY global $wpdb; $result = $wpdb->get_results ( " SELECT * FROM $wpdb->wp_posts WHERE post_type = 'page' " ); echo $result; // display data เอาท์พุท: ARRAY แก้ไข : หลังจากเปลี่ยนคำแนะนำด้านล่างตอนนี้ฉันใช้สิ่งนี้ แต่ฉันยังไม่ได้รับผลลัพธ์ใด ๆ : global $wpdb; $posts = $wpdb->wp_posts; $result = $wpdb->get_results( " SELECT * FROM $posts WHERE 'post_type' = 'page' …
12 database  query  wpdb 

3
รับ $ post ในตัวกรอง init หรือการกระทำ
ดูเหมือนว่า $ โพสต์จะมีให้เฉพาะเมื่อสั่งการบางเวลาเท่านั้น ฉันมีเบ็ด "init" ที่ต้องการดึงข้อมูลบางส่วนจากฐานข้อมูลโดยใช้ $ post-> ID จนถึงตอนนี้วิธีแก้ปัญหาเดียวของฉันคือการเพิ่มตัวกรองอื่นใน the_content ที่ใช้ $ post เพื่อรับข้อมูลที่ฉันต้องการ น่าเสียดายที่มันสะท้อนกลับมาที่ค่าหน้าจอและล้มเหลวในการกลับไปที่ฟังก์ชั่นที่เรียกว่าตัวกรองเดิม นี่คือรหัสที่ดึงข้อมูลที่ฉันต้องการ แต่ก้องและล้มเหลวในการคืนค่า: add_filter('the_content', 'get_keyword'); function get_keyword() { global $post; $keyword = get_post_meta( $post->ID, '_wpg_def_keyword', true ); return $keyword; } ใครบ้างมีข้อเสนอแนะเกี่ยวกับวิธีการรับสิ่งที่ฉันต้องการและให้มันกลับไปที่ฟังก์ชั่นการโทรสำหรับใช้ในภายหลังในปลั๊กอิน? แก้ไข: เพื่อให้ชัดเจนยิ่งขึ้นฉันมีตัวกรองทำงานอยู่ที่ init ซึ่งต้องสามารถดึงข้อมูลในโพสต์ปัจจุบันจากฐานข้อมูลได้ ในการดำเนินการนี้ต้องมีการเข้าถึง $ post-> ID แต่มันเป็นไปไม่ได้ภายใน init ดังนั้นฉันจะได้ผลลัพธ์ที่ต้องการได้อย่างไร ขอบคุณ โจนาธาน การแก้ไข: …
12 hooks 

5
วิธีการดีบั๊กปลั๊กอินด้วย Xdebug
ฉันสามารถติดตั้งและตั้งค่าได้อย่างง่ายดาย NetBeans 6.9.1 และ Xdebug ในสภาพแวดล้อมท้องถิ่นของฉันอิงตาม PHP 5.3.0 (XAMPP) ปัญหาของฉันในตอนนี้คือต่อไปนี้: ถ้าฉันใส่เบรกพอยต์บน index.php ของ Wordpress หรือไฟล์อื่น ๆ ของคอร์เซ็ต PHP หลัก NetBeans หยุดอย่างถูกต้องในตำแหน่งที่ต้องการ ถ้าฉันใส่เบรกพอยต์ในไฟล์ปลั๊กอินทริกเกอร์การเรียกใช้โค้ด NetBeans จะไม่หยุดแค่นั้น คุณรู้จักวิธีแก้ไขหรือไม่? อัปเดต:ข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่ฉันกำลังพยายามแก้ไขปัญหา ปลั๊กอินเรียกว่าVanilla Forumsและมีโครงสร้างไฟล์ต่อไปนี้: - plugins - vanilla-forums + assets + nbproject + templates admin.php embed.php functions.php hooks.php plugin.php sso.php widgets.php ผมตั้งจุดพักภายในฟังก์ชั่นที่มีชื่อที่กำหนดไว้ในvf_validate_options functions.phpฉันแน่ใจว่ามีการใช้งานฟังก์ชันนี้ แต่ NetBeans ไม่ได้หยุดอยู่แค่นั้น

4
เป็นไปได้ที่จะแทนที่ผลลัพธ์ของ get_template_part ()?
ฉันกำลังทำงานกับธีมลูกฉันไม่ต้องการแทนที่ไฟล์เทมเพลตหลักเพื่อรักษาความเรียบง่ายของธีมลูกรวมทั้งลดจำนวนรหัสและการบำรุงรักษาเมื่อเวลาผ่านไป ในลูปเท็มเพลต index.php ในธีมพาเรนต์ใช้: get_template_part( 'content' ); ซึ่งจะนำมาในcontent.phpฉันต้องการให้มันมีลักษณะเหมือนget_template_part( 'content', get_post_format() );หรือคล้ายกันมากขึ้นเพื่อที่จะนำเทมเพลตต่างๆเช่นcontent-apart.phpเป็นต้นโดยไม่ต้องสร้างindex.phpในธีมลูกเพื่อเขียนทับ ผู้ปกครองสำหรับการเปลี่ยนแปลงบรรทัดเดียว get_template_part() ประกอบด้วย: function get_template_part( $slug, $name = null ) { do_action( "get_template_part_{$slug}", $slug, $name ); $templates = array(); $name = (string) $name; if ( '' !== $name ) $templates[] = "{$slug}-{$name}.php"; $templates[] = "{$slug}.php"; locate_template($templates, true, false); } …

2
วิธีเพิ่มเมนูย่อยในเมนูที่สร้างโดย wp_nav_menu โดยใช้ปลั๊กอิน
ฉันมีเมนูที่สร้างขึ้นโดยwp_nav_menuมีลักษณะเหมือน <ul class="nav-menu" id="menu-top-nav"> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-43" id="menu-item-43"><a href="http://www.example.com/item1.com">Item 1</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-44" id="menu-item-44"><a href="http://www.example.com/item2.com">Item 2</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-45" id="menu-item-45"><a href="http://www.example.com/item3.com">Item 3</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-46" id="menu-item-46"><a href="http://www.example.com/item4.com">Item 4</a></li> </ul> ฉันต้องการแก้ไขเมนูด้านบนโดยเพิ่มเมนูย่อยใน "รายการ 3" โดยใช้ปลั๊กอินของฉันดังนั้นด้านล่างคือผลลัพธ์ที่ต้องการ <ul class="nav-menu" id="menu-top-nav"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-43" id="menu-item-43"><a href="http://www.example.com/item1.com">Item …

2
มีเอกสาร Life Cycle Plugin หรือไม่?
มีเอกสารบางอย่างที่อธิบายวงจรชีวิตของปลั๊กอินหรือไม่? ฉันเริ่มปลั๊กอินใหม่ที่มีสไตล์ OOP และฉันเพิ่งค้นพบว่าคลาสหลักของฉันได้รับการติดตั้งจำนวนมาก (ขอบคุณ Xdebug และ Netbeans) ฉันสงสัยว่าทำไมและมันทำให้ฉันรำคาญเพราะฉันกำลังติดตั้งวัตถุ Dropbox-API และฉันไม่คิดว่า WordPress จะทำการติดตั้งคลาสหลักของฉันมากนัก ฉันไม่พบสิ่งใดที่เกี่ยวข้องกับวงจรชีวิตปลั๊กอินใน Codex หรือบน Google

2
ปลั๊กอิน SVN & อัปเดต API - มีการระบุปลั๊กอินอย่างไร
สิ่งหนึ่งที่ไม่ชัดเจนสำหรับฉัน (โดยเฉพาะเมื่อฉันไม่ได้ส่งปลั๊กอินไปยังที่เก็บ) คือการสร้าง "ID" (กระสุน) ที่ไม่ซ้ำกันของปลั๊กอิน (เช่นรายการนี้ ) มันเป็นตัวเลือกโดยผู้เขียน ณ จุดส่ง SVN หรือโดยผู้กลั่นกรอง? มันเป็นชื่อปลั๊กอินที่ถูกสุขอนามัยหรือไม่? มันคือplugin_basenameอะไร มันเป็นไฟล์ปลั๊กอินหลัก (ไม่มีชื่อไดเรกทอรี) หรือไม่? อื่น ๆ อีก? ฉันอยากรู้ว่าคุณสมบัติของปลั๊กอินเชื่อมโยงไปเป็นของ SVN (ถ้ามี) สำหรับการอัปเดตปลั๊กอิน API? ฉันขอให้ส่วนหนึ่งจากธรรมชาติของฉันต้องการที่จะรู้ แต่ยังวิธีการเพื่อให้มั่นใจ (ในระดับหนึ่ง) ปลั๊กอิน one-off ของฉันเองจะไม่ขัดแย้งกับหนึ่งใน SVN ตัวอย่างเช่นหากเป็นเพียง3)ฉันสามารถใช้ชื่อไดเรกทอรีที่ไม่ซ้ำกันสูง แต่ให้ใช้ชื่อปลั๊กอิน (ชื่อ) สั้น ๆ NBขณะที่ "มาตรฐาน" การประชุมการตั้งชื่อไฟล์น่าจะเป็นฉันได้กลายเป็นที่รัก[my-plugin-name]/[my-plugin-name].php[my-plugin-name]/plugin.php มันให้ปลั๊กอินทั้งหมดของฉันความสอดคล้องบางอย่างชัดเจนว่าเป็นไฟล์ "bootloader" (หลัก) และจากมุมมองย่อยฉันเกลียดการซ้ำซ้อนของชื่อไดเรกทอรี นี่เป็นอีกเหตุผลที่ฉันถามคำถามตั้งแต่4)จะทำให้ฉันเมา รวมทั้งฉันต้องการฟังความคิดเห็นของคุณเกี่ยวกับ "มาตรฐาน" ด้วย :)

1
add_role () ทำงานเพียงครั้งเดียว?
ฉันประหลาดใจที่ค้นพบว่า add_role () แก้ไขฐานข้อมูลและล้มเหลวหากมีบทบาทอยู่แล้ว มีความหมายสองประการที่นี่ร้ายแรงกว่าอีกข้อหนึ่ง: 1) หากคุณกำลังพัฒนาและอัปเดตรหัส add_role ของคุณคุณต้องลบ remove_role () 2) ทันทีที่คุณมีมันถูกต้องคุณไม่ควรรันโค้ดนั้น อีกครั้ง ดังนั้นโดยทั่วไปฉันวาง add_role () ไว้ในตะขอแอ็คชัน wp_loaded และเนื่องจากฉันอยู่ระหว่างการพัฒนาฉันได้เพิ่ม remove_role () ก่อนหน้า add_role ของฉันด้วยดังนั้นฉันจึงมั่นใจได้ว่าถ้าฉันแก้ไขรายการตัวพิมพ์ใหญ่ก็จะมีผลจริง แต่ชัดเจนว่าตอนนี้ถูกเรียกใช้ทุกครั้งที่มีการเข้าถึงหน้าเว็บของบล็อก โอเคฉันสามารถใส่ไว้ในการกระทำของผู้ดูแลระบบเท่านั้นหรือฉันสามารถสร้างหน้าปลั๊กอินได้ภายใต้ผู้ใช้หรือเครื่องมือที่บทบาทนี้สามารถสร้างได้ครั้งเดียว ฉันคิดว่าฉันหวังว่าจะมีทางออกที่ง่ายกว่าและสง่างามกว่าอยู่ที่นั่น ฉันไม่คิดว่าจะมีการกระทำแบบ run_once อยู่ที่นั่นหรือ หรือวิธีปฏิบัติที่ดีที่สุดเพียงเพิ่มบทบาทแล้วใช้ add_cap () หลายครั้ง และถึงอย่างนั้นฉันก็จินตนาการว่า add_cap กำลังเข้าถึงฐานข้อมูล แค่คิดในแง่ของวิธีที่ดีที่สุดในการลดการเข้าถึง db ที่ไม่จำเป็น อะไรคือแนวทางปฏิบัติที่ดีที่สุดของคุณ?

1
อัพเดทไฟล์ไลบรารีสื่อหลังจากอัพโหลดผ่าน FTP
ฉันต้องอัปโหลดไฟล์จำนวนมากและตรงไปยัง / wp-content / uploads / [ปี] / [เดือน] / แต่ไฟล์เหล่านั้นไม่ปรากฏใน Dashboard> สื่อ> ห้องสมุด มีวิธีอัปเดตหรือรีเฟรชไฟล์เพื่อโหลดไฟล์เหล่านั้นหรือมันเกิดขึ้นเพราะมันควรจะเขียนในฐานข้อมูลและฉันหลีกเลี่ยงมันได้หรือไม่ ในกรณีนี้มีปลั๊กอินที่จะแก้ไขหรือไม่
11 media  ftp  library 

5
แนวทางปฏิบัติที่ดีที่สุดสำหรับ PHP
เมื่อทำเทมเพลตเช่น single.php และคุณมี php อยู่ใน html สิ่งที่ดีที่สุดคือ: เริ่ม + หยุด PHP หรือไม่ ตัวอย่างเช่น <h1 class="post-tilte"><?php the_title(); ?></h1> <p class="post-content"><?php the_content();?></p> หรือ สะท้อน HTML และ Escape PHP หรือไม่ ตัวอย่างเช่น - <?php echo '<h1 class="post-title">' . get_the_title() . '</h1> <p class="post-content"' . get_the_content() . '</p> ฉันไม่มีตัวเลือกล่วงหน้าและพบว่าตัวเองกำลังทำทั้งสองอยากรู้อยากเห็นความคิดบางอย่าง
11 php  wp-query  escaping 

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.