คำถามติดแท็ก pre-get-posts

5
เมื่อใดที่จะใช้ WP_query (), query_posts () และ pre_get_posts
ฉันอ่าน@ nacin คุณไม่รู้จัก Queryเมื่อวานนี้และถูกส่งลงมาเล็กน้อยจากช่องกระต่ายสอบถาม ก่อนหน้าเมื่อวานนี้ฉันใช้ผิดquery_posts()กับความต้องการในการสอบถามทั้งหมดของฉัน ตอนนี้ฉันฉลาดขึ้นเล็กน้อยเกี่ยวกับการใช้WP_Query()แต่ยังมีพื้นที่สีเทาอยู่ สิ่งที่ฉันคิดว่าฉันรู้แน่นอน: ถ้าฉันทำเพิ่มเติมลูปใดก็ได้บนหน้าในแถบด้านข้างในส่วนท้ายที่ชนิดของ "โพสต์ที่เกี่ยวข้องกัน" ใด ๆ ฯลฯ WP_Query()-ฉันต้องการที่จะใช้ ฉันสามารถใช้มันซ้ำ ๆ ในหน้าเดียวโดยไม่มีอันตรายใด ๆ (ขวา?). สิ่งที่ฉันไม่รู้แน่นอน เมื่อไหร่ที่ผมใช้@ nacin ของ pre_get_postsเทียบกับWP_Query()? ฉันควรใช้pre_get_postsทุกอย่างตอนนี้หรือไม่? เมื่อฉันต้องการแก้ไขลูปในหน้าเทมเพลต - สมมติว่าฉันต้องการแก้ไขหน้าการจัดเก็บภาษีแบบอนุกรม - ฉันจะลบif have_posts : while have_posts : the_postส่วนและเขียนเองได้WP_Query()หรือไม่ หรือฉันจะแก้ไขผลลัพธ์ที่ใช้pre_get_postsในไฟล์ functions.php ของฉันได้อย่างไร TL; DR กฎ tl; dr ที่ฉันต้องการดึงออกมาคือ: อย่าใช้query_postsอีกต่อไป เมื่อใช้หลายแบบสอบถามในหน้าเดียวให้ใช้ WP_Query() เมื่อทำการแก้ไขลูปให้ทำสิ่งนี้ __________________ ขอบคุณสำหรับภูมิปัญญาใด …

12
เรียงตามค่าเมตา แต่รวมถึงโพสต์ที่ไม่มี
ฉันแก้ไขการค้นหา WP ในตัวโดยใช้pre_get_postsตัวกรองทำให้ผู้ใช้สามารถเรียงลำดับโพสต์ (รวมถึงโพสต์ที่กำหนดเองจำนวนมาก) ตามเขตข้อมูลที่แตกต่างกัน ปัญหาที่ฉันมีอยู่ก็คือเมื่อฉันบอกให้ WP เรียงลำดับตามค่าเมตามันจะยกเว้นการโพสต์ทั้งหมดที่ไม่ได้ตั้งค่าเมตานั้น สิ่งนี้ทำให้จำนวนผลลัพธ์เปลี่ยนไปถ้าคุณเปลี่ยนการเรียงลำดับจากพูดว่า "ราคา" เป็น "วันที่" เนื่องจาก "โพสต์" ไม่มีการตั้งค่า "ราคา" แต่ทำ "รายการ" นี่ไม่ใช่สิ่งที่ฉันต้องการดังนั้นฉันจึงอยากทราบว่ามีวิธีการรวมโพสต์ทั้งหมดหรือไม่แม้ว่าจะมีเมตาดาต้าที่ฉันเรียงลำดับอยู่หรือไม่ก็ตาม ฉันรู้วิธีเรียงลำดับมากกว่าหนึ่งฟิลด์ แต่นั่นไม่ได้ช่วย ขอบคุณ ดูเหมือนว่าฉันไม่ใช่คนเดียวที่มีคำถามนี้: วิธีรวมโพสต์ทั้งที่มี & ไม่มี meta_key บางรายการใน args สำหรับ wp_query หรือไม่ แต่ก็ไม่มีทางออก ปรับปรุง ฉันลองคำตอบแล้ว แต่ไม่แน่ใจว่าฉันเข้าใจถูกต้องหรือไม่นี่คือสิ่งที่ฉันมีตอนนี้: <?php function my_stuff ($qry) { $qry->set('meta_query', array(array( 'key' => 'item_price', 'value' => '', 'compare' …

3
ฉันควรใช้ Pre Get กระทู้หรือ WP_Query
ฉันมีคำถามต่อไปนี้ซึ่งฉันโทรหาในเทมเพลต taxonomy.php ผ่านทาง query_brands_geo('dealers', 'publish', '1', $taxtype, $geo, $brands); ฟังก์ชั่นนี้ทำงานได้อย่างสมบูรณ์แบบ อย่างไรก็ตามหลังจากอ่าน codex สำหรับการโพสต์แบบสอบถามมันพูดถึง pre_get_posts เป็นวิธีที่ต้องการในการเปลี่ยนแบบสอบถามเริ่มต้น pre_get_posts จะมีประสิทธิภาพมากกว่านี้จากนั้น wp_query ของฉันจะทำงานด้านล่างหรือไม่ ถ้าเป็นเช่นนั้นฉันจะสร้าง pre_get_posts และส่งตัวแปรและข้อความค้นหาของฉันด้านล่างได้อย่างไร function my_custom_query($posttype, $poststatus, $paidvalue, $taxtype, $geo, $brands) { global $wp_query; $wp_query = new WP_Query(); $args = array( 'post_type' => $posttype, 'post_status' => array($poststatus), 'orderby' => 'rand', 'posts_per_page' => …

2
ใช้ pre_get_posts กับ WP_Query
ผมอ่านสตีเฟ่นแฮร์ริสคำตอบที่ดี 'เพื่อคำถามนี้เกี่ยวกับการใช้WP_query(), และquery_posts()pre_get_posts เขาบอกว่า"pre_get_posts เป็นตัวกรองสำหรับการแก้ไขแบบสอบถามใด ๆส่วนใหญ่มักจะใช้เพื่อแก้ไขเฉพาะ 'ข้อความค้นหาหลัก' เท่านั้น" มันเป็นไปได้ที่จะใช้pre_get_postsกับตัวกรองเฉพาะแบบสอบถามรองเฉพาะที่สร้างขึ้นด้วยWP_Query? เช่น. $my_secondary_loop = new WP_Query(...); if( $my_secondary_loop->have_posts() ): while( $my_secondary_loop->have_posts() ): $my_secondary_loop->the_post(); //The secondary loop endwhile; endif; wp_reset_postdata(); ความช่วยเหลือใด ๆ ที่ชื่นชมมาก

3
ฉันสามารถยกเว้นการโพสต์ด้วยเมตาคีย์โดยใช้ฟังก์ชัน pre_get_posts ได้หรือไม่
ผมเห็นหลายคนชอบที่จะใช้เบ็ดแทนpre_get_posts query_postsรหัสด้านล่างใช้งานได้และแสดงการโพสต์ทั้งหมดที่มีเมตาคีย์ "เด่น" function show_featured_posts ( $query ) { if ( $query->is_main_query() ) { $query->set( 'meta_key', 'featured' ); $query->set( 'meta_value', 'yes' ); } } add_action( 'pre_get_posts', 'show_featured_posts' ); แต่ฉันต้องการให้โพสต์ที่มีfeaturedmeta_key '' ถูกแยกออกจากข้อความค้นหาหลัก มีวิธีที่ง่ายสำหรับสิ่งนี้หรือไม่?

3
กระทู้ปักหมุดมีจำนวนโพสต์เกินขีด จำกัด ต่อหน้า
ฉันใช้pre_get_postsเพื่อปรับจำนวนโพสต์ที่แสดงบนหน้าแรกของฉัน function lifelounge_query_adjust( $query ) { if ( is_home() ) { set_query_var( 'posts_per_page', 12 ); return; } } add_filter( 'pre_get_posts', 'lifelounge_query_adjust' ); แต่ฉันพบปัญหากับการโพสต์เหนียว โดยทั่วไปถ้าฉันมีโพสต์ใด ๆ เหนียวแบบสอบถามจะแสดงมากขึ้นกว่า 12 โพสต์ผมได้ระบุไว้เพราะมันจะแสดง 12 บวกยังโพสต์ใด ๆ แน่นอนฉันไม่สนใจโพสต์เหนียว: function lifelounge_query_adjust( $query ) { if ( is_home() ) { set_query_var( 'posts_per_page', 1 ); set_query_var( 'ignore_sticky_posts', 1 ); …

1
ใช้ pre_get_posts ในหน้าจริงและหน้าคงที่
ฉันได้ทำการวิจัยอย่างกว้างขวางเกี่ยวกับวิธีการใช้pre_get_postsบนหน้าจริงและหน้าคงที่และดูเหมือนว่าไม่มีวิธีการพิสูจน์คนโง่ ตัวเลือกที่ดีที่สุดที่ฉันพบว่าวันที่มาจากการโพสต์ทำโดย @birgire ใน Stackoverflow ฉันเขียนมันใหม่ลงในคลาสของการสาธิตและทำให้โค้ดนั้นมีความเคลื่อนไหวมากขึ้น class PreGeTPostsForPages { /** * @var string|int $pageID * @access protected * @since 1.0.0 */ protected $pageID; /** * @var bool $injectPageIntoLoop * @access protected * @since 1.0.0 */ protected $injectPageIntoLoop; /** * @var array $args * @access protected * @since 1.0.0 */ protected …

4
แก้ไขหน้า Taxonomy เพื่อแยกรายการใน taxonomies เด็ก
ฉันพบคำถามนี้: มีวิธีใช้ $ query-> set ('tax_query' ในตัวกรอง pre_get_posts หรือไม่ ซึ่งดูเหมือนจะบ่งบอกว่าใช่คุณสามารถเปลี่ยนการสืบค้น taxonomy ในคลัง taxonomy ผ่าน pre_get_posts () ดังนั้นฉันจึงมากับ add_action('pre_get_posts', 'kia_no_child_terms' ); function kia_no_child_terms( $wp_query ) { if( is_tax() ) { $wp_query->tax_query->queries[0]['include_children'] = 0; } } เช่นกัน add_action('pre_get_posts', 'kia_no_child_terms' ); function kia_no_child_terms( $wp_query ) { if( is_tax() ) { $tax_query = $wp_query->get( …

2
มีวิธีใช้ $ query-> set ('tax_query' ในตัวกรอง pre_get_posts หรือไม่
มีวิธีใช้$query->set('tax_query', ...)ในpre_get_postsตัวกรองหรือไม่? เช่นรหัสต่อไปไม่ได้เปลี่ยนการสืบค้น โปรดทราบว่าฉันกำลังสร้าง $ taxonomies จากและการค้นหาที่กำหนดเอง function custom_search_filter($query) { ... // array('taxonomy' => 'category', 'field' => 'id', 'terms' => array( 41,42 ), 'operator' => 'IN') $taxonomies = implode(',', $taxonomy_arr); // /wordpress/25076/how-to-filter-wordpress-search-excluding-post-in-some-custom-taxonomies $taxonomy_query = array('relation' => 'AND', $taxonomies); $query->set('tax_query', $taxonomy_query); } return $query; } add_filter( 'pre_get_posts', 'custom_search_filter', 999 ); ขอบคุณล่วงหน้า.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.