คำถามติดแท็ก loop

แกนหลักของเคียวรี WordPress, ลูปนำเสนอวิธีที่ง่ายในการเข้าถึงข้อมูลโพสต์และแสดงบนเว็บไซต์ของคุณ

5
จะแก้ไขการแบ่งหน้าสำหรับลูปแบบกำหนดเองได้อย่างไร
ฉันได้เพิ่มคิวรีที่กำหนดเอง / รองลงในไฟล์เทมเพลต / เทมเพลตหน้าเว็บที่กำหนดเอง; ฉันจะทำให้ WordPress ใช้เคียวรีที่กำหนดเองของฉันสำหรับการแบ่งหน้าแทนการใช้การแบ่งหน้าลูปแบบสอบถามหลักได้อย่างไร ภาคผนวก query_posts()ฉันได้แก้ไขแบบสอบถามวงหลักผ่าน ทำไมการแบ่งหน้าไม่ทำงานและฉันจะแก้ไขได้อย่างไร
122 loop  pagination  query 

7
แสดง URL ของหน้าปัจจุบันอย่างไร
ฉันต้องการเพิ่มรหัส PHP ที่กำหนดเองเพื่อให้แน่ใจว่าเมื่อใดก็ตามที่หน้าเว็บในไซต์ของฉันโหลดในเบราว์เซอร์ URL ของหน้านั้นจะถูกสะท้อนไปยังหน้าจอ ฉันสามารถใช้งานecho get_permalink()ได้ แต่มันไม่สามารถใช้ได้กับทุกหน้า บางหน้า (เช่นหน้าแรกของฉัน ) แสดงหลายโพสต์และหากฉันใช้get_permalink()ในหน้าเหล่านี้ URL ของหน้าเว็บที่แสดงจะไม่ถูกส่งคืน (ฉันเชื่อว่ามันคืน URL ของโพสต์ล่าสุดในลูป) สำหรับหน้าเหล่านี้ฉันจะคืน URL ได้อย่างไร ฉันสามารถแนบget_permalink()กับตะขอที่ติดไฟก่อนที่ลูปจะทำงานได้หรือไม่? หรือฉันจะแยกออกจากวงหรือตั้งค่าใหม่เมื่อมันเสร็จสมบูรณ์? ขอบคุณ
55 php  loop  permalinks  urls 

5
การแบ่งหน้าไม่ทำงานกับลูปที่กำหนดเอง
ฉันมีการวนซ้ำแบบกำหนดเองที่ฉันใช้เพื่อแสดงรายการอสังหาริมทรัพย์บางรายการที่จะให้บริการภายใน 60 วัน ฉันกำลังเรียกมันด้วยฟังก์ชั่นต่อไปนี้: <?php $sixtydays = date('Y/m/d', strtotime('+60 days')); $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $query = new PostsOrderedByMetaQuery(array( 'post_type' => array('post', 'real-estate'), 'meta_key' => 'Time Available', 'meta_compare' => '<=', 'meta_value' => $sixtydays, 'paged' => $paged, 'orderby_meta_key' => 'Price', 'orderby_order' => 'ASC' )); ?> <?php while ($query->have_posts()) : …

2
กำลังนับโพสต์ของลูป Wordpress ที่กำหนดเอง (WP_Query)?
ฉันพยายามวางสิ่งนี้: <?php $count = count($custom_posts); ?> <h2><?php echo $count; ?></h2> ในตอนท้ายของลูป: <?php if ( bbp_get_forum_title() == 'Test Forum 1' ) : ?> <?php $custom_posts = new WP_Query(); ?> <?php $custom_posts->query('post_type=blocks&location=Business and Finance&order=DESC'); ?> <?php while ($custom_posts->have_posts()) : $custom_posts->the_post(); ?> <div class="ad"> <?php the_content(); ?> </div> <?php $count = count($custom_posts); ?> …
41 loop 

9
รับข้อความที่ตัดตอนมาโดยใช้ get_the_excerpt นอกวง
ฉันมีรหัสที่โทรget_the_title()และใช้งานได้ แต่get_the_excerpt()กลับว่างเปล่า ฉันจะทำให้มันทำงานได้อย่างไร รหัสนี้อยู่ในส่วนเสริมที่เรียกว่า "WP Facebook Open Graph protocol" นี่คือส่วนที่ฉันต้องการเปลี่ยน: if (is_singular('post')) { if (has_excerpt($post->ID)) { echo "\t<meta property='og:description' content='".esc_attr(strip_tags(get_the_excerpt($post->ID)))."' />\n"; }else{ echo "\t<meta property='og:description' content='". [?] ."' />\n"; } }else{ echo "\t<meta property='og:description' content='".get_bloginfo('description')."' />\n"; } ที่นี่has_excerptล้มเหลวเสมอและget_the_excerpt($post->ID)ไม่ทำงานอีกต่อไป (เลิกใช้แล้ว) ดังนั้นฉันจะแสดงข้อความที่ตัดตอนมาที่นั่นได้อย่างไร PS: ฉันใช้ปลั๊กอิน "Advanced Excerpt" เช่นกัน
31 loop  excerpt 

3
ฉันสามารถบังคับให้ WP_Query ส่งคืนผลลัพธ์ไม่ได้หรือไม่
ฉันกำลังทำงานกับเว็บไซต์ที่มีคุณสมบัติการค้นหาที่ช่วยให้ผู้ใช้สามารถค้นหาเมตาโพสต์ได้มากมาย มีรูปแบบการค้นหาเฉพาะที่ฉันต้องการบังคับให้ส่งคืนผลลัพธ์ไม่ได้ WP_Query ในทางเทคนิคจะค้นหาผลลัพธ์ในฐานข้อมูล แต่ฉันต้องการแทนที่อย่างใดเพื่อบังคับให้ส่งคืนผลลัพธ์ที่ไม่ก่อให้เกิดการif( $example->have_posts() )ล้มเหลว มีพารามิเตอร์บางประเภทที่ฉันสามารถส่งไปยัง WP_Query เช่น'force_no_results' => trueนั้นจะบังคับให้ส่งคืนผลลัพธ์หรือไม่?
23 wp-query  loop  search 

3
ถ้า (is_home () &&! is_front_page ())
ฉันเห็นรหัสต่อไปนี้เป็นจำนวนมากในไฟล์ index.php ฉันเข้าใจว่าis_front_page()ผลตอบแทนจริงเมื่อดูหน้าเว็บไซต์ (ไม่ว่าจะแสดงดัชนีโพสต์บล็อกหรือหน้าคงที่) ในขณะที่is_home()ผลตอบแทนจริงเมื่อดูดัชนีโพสต์บล็อก (ไม่ว่าจะปรากฏในหน้าแรกหรือหน้าคงที่) ฉันยังคงนิ่งงันเกี่ยวกับการใช้รหัสต่อไปนี้ - <?php if ( have_posts() ) : ?> <?php if ( is_home() && ! is_front_page() ) : ?> <header> <h1 class="page-title screen-reader-text"><?php single_post_title(); ?></h1> </header> <?php endif; ?> คำอธิบายใด ๆ ว่าทำไมโค้ดส่วนนี้จึงได้รับความนิยมมาก
23 loop  themes  templates 

3
แบ่งเนื้อหาและคลังภาพ
มีวิธีแยกเนื้อหาโพสต์และรหัสย่อของคลังภาพหรือไม่ ฉันต้องการแสดงแกลเลอรีนอกเนื้อหาปกติของฉันไม่ว่าจะวางไว้ที่ใดหรืออย่างไร ฉันสามารถใช้สิ่งนี้เพื่อรับรหัสย่อของตัวเอง: if(has_shortcode(get_the_content(), 'gallery')){ $pattern = get_shortcode_regex(); preg_match("/$pattern/s", get_the_content(), $matches); echo do_shortcode($matches[0]); } แต่วิธีนี้ใช้ไม่ได้หากรหัสย่อของแกลเลอรีไม่ใช่อินสแตนซ์แรก มีวิธีแยกเนื้อหาและแกลเลอรีของฉันออกอย่างสมบูรณ์หรือไม่ แก้ไข:ฉันมีวิธีแก้ปัญหาแบบกึ่ง แต่ดูเหมือนว่าเป็นวิธีที่ยืดยาวเพื่อไปเกี่ยวกับมัน มันคว้ารหัสย่อตัวแรกในโพสต์ (ซึ่งจะต้องแก้ไขเนื่องจากฉันต้องการเพียงรหัสย่อ "คลังภาพ") จากนั้นลบรหัสย่อทั้งหมดออกจากเนื้อหา (อีกครั้งไม่ใช่สิ่งที่ฉันต้องการทำจริงๆ <?php if(has_shortcode(get_the_content(), 'gallery')) : ?> <?php $pattern = get_shortcode_regex(); preg_match("/$pattern/s", get_the_content(), $matches); ?> <div id="content"> <?php echo strip_shortcodes(get_the_content()); ?> </div> <div id="gallery"> <?php echo do_shortcode($matches[0]); ?> </div> …

4
ทำไมฉันถึงต้องใส่ถ้า (have_posts ()) อยู่ในขณะที่ (have_posts ()) ไม่พอ?
ฉันมีคำถามเกี่ยวกับ "วง" <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <?php endwhile; else: ?> <p><?php _e('Sorry, no posts matched your criteria.'); ?></p> <?php endif; ?> รหัสนำมาจากหน้าห่วง WordPress Codex ทำไมฉันถึงต้องมีifส่วนร่วม? ดูเหมือนว่าหากมีการwhileวนซ้ำก็ใช้งานได้ดี ในกรณีใดปัญหาเกิดขึ้นหากไม่มีifคำสั่ง? แก้ไข ฉันยอมรับคำตอบของ @ Chip แต่พูดอย่างสุจริตว่าฉันต้องการเพียงส่วนสุดท้าย ตอนนี้ฉันรู้สิ่งที่ฉันอยากรู้จากคำถามของฉัน ifคำสั่งเป็นเพียงเมื่อจำเป็นถ้าคุณต้องการที่จะนำส่วนหัวหรือส่วนท้ายที่ควรจะเขียนเพียงครั้งเดียว หากคุณไม่ได้ใช้ "wrapper" ifคำสั่งนั้นไม่จำเป็น
22 loop 


6
ฉันจะแยก taxonomy ที่กำหนดเองออกจากลูปการโพสต์ได้อย่างไร
มีวิธีที่ง่ายหรือไม่ในการแยกโพสต์ทั้งหมดออกจาก taxonomy ที่กำหนดเองในลูปหรือไม่? ฉันดูสูงและต่ำและดูเหมือนว่า SE, SO หรือ Google จะไม่มีคำตอบที่ตรง ฉันรู้ว่ามันสามารถทำได้ผ่านแบบสอบถาม WPDB แต่ดูเหมือนว่าเชือกขนาดใหญ่ที่จะข้ามไปสำหรับสิ่งที่ควรจะค่อนข้างง่าย

1
เราควรไว้วางใจโพสต์กลม
@toscho แสดงความคิดเห็นต่อคำตอบนี้ซึ่งทำให้ฉันคิดอีกครั้ง วิธีการไว้วางใจมากที่สุดเราควรจะมีในขอบเขตทั่วโลกโดยเฉพาะเกี่ยวกับการโพสต์ Globals เช่น$post? แล้วอะไรล่ะ ตัวแปรทั่วโลกสามารถเขียนทับได้จากทุกคนก่อนที่เช็คของคุณจะทำงาน นั่นคือจุดของตัวแปรทั่วโลก: การเข้าถึงทั่วโลก $postเช่นเป็นหนึ่งใน globals ที่มีการปรับเปลี่ยนส่วนใหญ่ทั้งในรูปแบบของตัวเองหรือโดยปลั๊กอิน แต่มันยังเป็นที่นิยมใช้กันทั่วโลกในแอปพลิเคชั่นอื่น ๆ ภายในเทมเพลตที่กำหนดตัวอย่างเช่นการตั้งค่าโพสต์ที่เกี่ยวข้อง จากการตอบ (และแสดงความคิดเห็นใน) โพสต์หลายรายการที่มีปัญหาเฉพาะที่เกิดจากการใช้แบบสอบถามที่กำหนดเองมันชัดเจนว่าปัญหาส่วนใหญ่เกิดขึ้นเนื่องจากแบบสอบถามที่กำหนดเองไม่ได้ถูกตั้งค่าใหม่ จากนี้เห็นได้ชัดว่า$postไม่น่าเชื่อถือ โค้ดที่เขียนไม่ดีใด ๆ ที่ใช้ประโยชน์จากการสืบค้นที่กำหนดเองสามารถเปลี่ยน$postทั่วโลกซึ่งจะทำลายบางสิ่งบางอย่าง (เช่นโพสต์ที่เกี่ยวข้อง) มีนักพัฒนา WordPress เพียงไม่กี่คนเท่านั้นที่มีความรู้เพียงพอในการทำงานด้านในของคอร์และรู้ว่าต้องหลีกเลี่ยงอะไรบ้าง จำนวนผู้ใช้งานที่มากขึ้นไม่รู้ว่า WordPress แกนทำงานอย่างไร พวกเขาเพียงแค่ดาวน์โหลดธีมและติดตั้งปลั๊กอินเพื่อทำสิ่งที่จำเป็นหรือเพียงแค่คัดลอกโค้ดจากบทช่วยสอน สมมติว่าพวกเขาติดตั้งปลั๊กอินที่เขียนไม่ดีซึ่งแบ่งโพสต์ที่เกี่ยวข้องไว้ในโพสต์เดียวพวกเขาจะรู้ได้อย่างไรว่าเกิดอะไรขึ้น พวกเขาจะสามารถเรียงลำดับตัวเองออกมาหรือพวกเขาจะเป็นร้อยคนที่เขียนอีเมลถึงผู้แต่งธีมเกี่ยวกับปัญหานี้หรือโพสต์คำถามบนไซต์นี้หรือไม่? คำถามของฉัน:คุณจะสามารถป้องกันปัญหาดังกล่าวที่เกิดจากรหัสนำเข้าอื่น ๆ ได้อย่างไรเมื่อสิ่งที่ทั่วโลกต้องการ$postนั้นไม่น่าเชื่อถือ? เราควรจะใช้สิ่งที่เป็นสากล$postหรือไม่? ทางเลือกคืออะไร? เพียงเพื่อแบ่งปันความคิดของฉันที่นี่ก่อนที่ผมจะสรุป: ผมคิดว่า (และที่เห็นในรูปแบบบางและปลั๊กอินด้วย) ทั้งการใช้wp_reset_postdata()หรือwp_reset_query()ก่อนที่จะทำให้การใช้เพื่อให้แน่ใจว่าโลกจะถูกรีเซ็ตของแบบสอบถามหลัก$post $postแต่ทำไมฉันควรขยายโค้ดของฉันในชุดรูปแบบของฉันเพราะคนอื่นไม่ได้รหัสปลั๊กอินของเขาอย่างถูกต้อง? และหากมีคนรีเซ็ตการสืบค้นที่กำหนดเองอย่างถูกต้องการดำเนินการนี้จะทำงานเป็นครั้งที่สองโดยไม่จำเป็นซึ่งไม่ดี วิธีที่สองผมคิดว่าการที่จะทำให้การใช้งานของแล้วใช้วิธีการบางอย่างเช่น$wp_query$wp_query->post ความคิดใด ๆ เกี่ยวกับเรื่องนี้จะได้รับการชื่นชม

1
วิธีแสดงคำอธิบายเมตาของ Yoast SEO ในเทมเพลตเก็บถาวรสำหรับแต่ละโพสต์แทนที่จะเป็น the_excerpt () [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ WordPress Development Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันอ่านคำถามนี้แต่ไม่ใช่สิ่งที่ฉันกำลังมองหาอย่างแน่นอน ฉันใหม่กับ Wordpress และสับสนเล็กน้อยกับฟังก์ชั่นและทุกอย่าง ฉันจะรับ metadescription ในลูปสำหรับแต่ละโพสต์ได้อย่างไร ขอบคุณมาก!

2
การรีเซ็ตข้อมูลโพสต์เป็นลูปก่อนหน้าในลูปซ้อนกัน
ฉันพยายามใช้ลูปซ้อนกับโพสต์ไปยังปลั๊กอินโพสต์ ลูปทั้งสองทำงาน แต่ปัญหาเกิดขึ้นหลังจากวนซ้ำที่สอง ($ issue) ฉันต้องการเข้าถึงลูปการประกาศ $ อีกครั้ง แต่ข้อมูลยังคงเป็นข้อมูล $ Issue wp_reset_query() จะรีเซ็ตกลับไปที่ลูปหลักใน single.php ซึ่งฉันไม่ต้องการ ฉันสามารถใช้get_posts()แทน WP_Query ใหม่ get_template_part()แต่ฉันต้องการที่จะสามารถที่จะใช้ ฉันจะรีเซ็ตข้อมูลของฉันกลับไปที่ลูปสิ่งพิมพ์เพื่อให้ 'ชื่อสิ่งพิมพ์' ที่สองส่งคืนสิ่งพิมพ์ไม่ใช่ปัญหาชื่อได้อย่างไร นี่คือรหัสของฉันภายใน single.php: $publication = new WP_Query( array( 'connected_type' => 'publication_to_post', 'connected_items' => $post->ID, 'fields' => 'ids', 'posts_per_page' => 1, ) ); if ( $publication->have_posts() ) { while ( …
21 wp-query  loop  reset 

2
รับเฉพาะเพจย่อยโดยตรงใน WordPress ด้วย get_pages
ฉันพยายามดึงลูก ๆ ที่อยู่ตรงหน้าทั้งหมด แต่ฉันก็รับเด็ก ๆ และเด็ก ๆ ทุกคนด้วย ความคิดใด ๆ ที่มา PHP: $args = array( 'child_of' => $post->ID, 'parent ' => $post->ID, 'hierarchical' => 0, 'sort_column' => 'menu_order', 'sort_order' => 'asc' ); $mypages = get_pages( $args ); foreach( $mypages as $post ) { $post_tempalte = the_page_template_part(); get_template_part( 'content' , $post_tempalte …

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