คำถามติดแท็ก rewrite-rules

กฎการเขียนซ้ำจะแก้ไขลักษณะของ URL ของเว็บ การแก้ไขนี้เรียกว่าการเขียน URL ใหม่ URL ที่เขียนใหม่ (บางครั้งเรียกว่า URL แบบสั้น ๆ แฟนซีเป็นมิตรกับเครื่องมือค้นหา - SEF URLs หรือ slugs) ใช้เพื่อให้ลิงก์ไปยังหน้าเว็บที่สั้นลงและมีความเกี่ยวข้องมากขึ้น เทคนิคนี้จะเพิ่มเลเยอร์ของสิ่งที่เป็นนามธรรมระหว่างไฟล์ที่ใช้ในการสร้างหน้าเว็บและ URL ที่นำเสนอต่อโลกภายนอก

1
ต้องการความช่วยเหลือเกี่ยวกับ add_rewrite_rule
วิธีการแก้ ฉันได้ไปกับอัปเดต 3 แล้วและทำงานได้ สิ่งที่ฉันได้เข้าใจผิดคือการที่ฉันเชื่อว่าเขียนกฎจะเปลี่ยนไปdesigners/?designer=some-designer&bid=9 /designers/some-designerแต่แน่นอนว่าเป็นวิธีอื่น ๆ ฉันได้รับการทำวิจัยบางอย่าง แต่ฉันไม่ได้ค่อนข้างได้รับวิธีการใช้add_rewrite_rule () โพสต์นี้ค่อนข้างใกล้เคียงกับสิ่งที่ฉันต้องการ แต่ฉันต้องการรหัสมากขนาดนั้นจริงหรือ ลิงค์ปัจจุบันของฉันคือ: http://www.noronianfashion.no/designers/?designer=Batlak-og-Selvig&bid=9 สิ่งที่ฉันต้องการคือ http://www.noronianfashion.no/designers/Batlak-og-Selvig / ฉันจะใช้งานadd_rewrite_rule()อย่างไร ฉันต้องส่งรหัสผู้ออกแบบ (การเสนอราคา) ฉันจะทำเช่นนั้นได้อย่างไรเมื่อใช้กฎ re.write โดยที่ไม่แสดงใน URL อัปเดต 1 ฉันพบสิ่งนี้ซึ่งเป็นการอธิบายเพิ่มเติมเล็กน้อย แต่มันไม่ทำงาน: function add_rewrite_rules( $wp_rewrite ) { $new_rules = array( '('.$template_page_name.')/designers/(.*?)/?([0-9]{1,})/?$' => 'designers.php?designer='. $wp_rewrite->preg_index(1).'&bid='. $wp_rewrite->preg_index(2) ); // Always add your rules to the top, …

9
คุณสร้างหน้า“ เสมือน” ใน WordPress ได้อย่างไร
ฉันกำลังพยายามสร้าง API ปลายทางที่กำหนดเองใน WordPress และฉันต้องการเปลี่ยนเส้นทางคำขอไปยังหน้าเสมือนในรูทของ WordPress ไปยังหน้าจริงที่มาพร้อมกับปลั๊กอินของฉัน โดยทั่วไปแล้วการร้องขอทั้งหมดไปยังหน้าหนึ่งจะถูกส่งไปยังหน้าอื่น ตัวอย่าง: http://mysite.com/my-api.php=>http://mysite.com/wp-content/plugins/my-plugin/my-api.php จุดประสงค์นี้คือทำให้ URL ปลายทางของ API สั้นที่สุดเท่าที่จะเป็นไปได้ (คล้ายกับhttp://mysite.com/xmlrpc.phpแต่จัดส่งไฟล์ API ปลายทางที่แท้จริงด้วยปลั๊กอินแทนที่จะกำหนดให้ผู้ใช้ย้ายไฟล์ไปมาในการติดตั้งและ / หรือแฮ็คคอร์ . แทงครั้งแรกของฉันคือการเพิ่มกฎการเขียนใหม่ที่กำหนดเอง อย่างไรก็ตามมีสองปัญหา จุดสิ้นสุดมีเครื่องหมายสแลชต่อท้ายเสมอ มันกลายเป็นhttp://mysite.com/my-api.php/ กฎการเขียนใหม่ของฉันถูกนำไปใช้เพียงบางส่วนเท่านั้น มันจะไม่เปลี่ยนเส้นทางไปก็จะเปลี่ยนเส้นทางไปยังwp-content/plugins... index.php&wp-content/plugins...การนำไปสู่ ​​WordPress แสดงทั้งหน้าไม่พบข้อผิดพลาดหรือเพียงแค่เริ่มต้นที่หน้าแรก ไอเดีย? ข้อเสนอแนะ?

2
จะสร้างเส้นทาง URL ที่กำหนดเองได้อย่างไร
ฉันมีข้อกำหนดที่แปลกประหลาดมากหวังว่าฉันสามารถอธิบายได้โดยไม่สับสนเกินไป ฉันสร้างเทมเพลตหน้าที่ฉันแสดงรายการคุณสมบัติบางอย่างที่ฉันได้รับจากไฟล์ XML ภายนอกดังนั้นจึงไม่มีปัญหาสมมติว่า URL เป็นดังนี้: http://www.example.com/properties/ แต่ละสถานที่ให้บริการมีลิงค์ที่ควรเปลี่ยนเส้นทางผู้ใช้ไปยังหน้า "คุณสมบัติเดียว" ที่แสดงข้อมูลเพิ่มเติมเกี่ยวกับมัน ฉันสงสัยว่ามีวิธีสร้างลิงก์เช่นนี้หรือไม่: http://www.example.com/properties/123 สถานที่123นั้นจะเป็นรหัสของทรัพย์สิน ดังนั้นหากฉันมี URL อย่างที่properties/some_idฉันต้องการจะสามารถโหลดไฟล์มุมมอง (เช่นsingle.phpหรือpage.phpไฟล์) แต่เฉพาะกับเงื่อนไข URL นี้ เป็นไปได้ไหม

1
เมื่อใดควรใช้ add_rewrite_tag ()
ฉันใช้เวลาสองสามวันเพื่อเรียนรู้วิธีเพิ่มกฎการเขียนใหม่ให้ดีที่สุด จนถึงตอนนี้ความเข้าใจของฉันก็คือวิธีที่เหมาะสมในการเพิ่มกฎง่ายๆคือadd_rewrite_rules()ต้องขอบคุณJan Fabry อย่างมากในการแลกเปลี่ยนนี้ แม้ว่าเขาจะพูดถึงว่าadd_rewrite_tags()ฉันไม่ได้เห็นไกด์นำเที่ยวอธิบายเมื่อมันมีประโยชน์ในการใช้งานซึ่งตรงข้ามกับวิธีอื่น ๆ ในการเพิ่มกฎการเขียนซ้ำหรือตัวอย่างที่ดีเกี่ยวกับการใช้งาน ดูเหมือนว่าจะเป็นเครื่องมือที่ทรงพลังกว่า แต่นั่นก็เป็นเรื่องที่ฉันเข้าใจได้ ผมหาตัวอย่างใน Codex ที่จะเกินไปคลุมเครือหรือไม่สมบูรณ์ ใครบางคนสามารถอธิบายอย่างละเอียดเกี่ยวกับมันหรือชี้ไปที่ทรัพยากรบางอย่าง? ฉันพบว่าไม่มีประโยชน์ใน Google แก้ไข: มัน Codex หน้าพูดคุยเกี่ยวกับ 'ทั่วไป' ใช้มันร่วมกับadd_rewrite_rules()แต่ไม่ได้ทำอย่างละเอียด ในทำนองเดียวกันหน้า Codexสำหรับการadd_rewrite_rules()อ้างอิงadd_rewrite_tags()แต่มันก็เบาบางมากในข้อมูล จะใช้ชุดค่าผสมดังกล่าวเมื่อใดและอย่างไร ตัวอย่างเดียวที่ฉันพบคือคำตอบโดย Rob Vermeerซึ่งฉันไม่เข้าใจ

1
จะล้างกฎการเขียนซ้ำบนไซต์ที่เชื่อถือได้ได้อย่างไร
สมมติว่าคุณมีปลั๊กอินที่จำเป็นต้องล้างกฎการเขียนซ้ำ คุณทำทุกอย่างถูกต้องด้วยการเปิดใช้งานฮุคและเพิ่มการล้างสายเพื่อให้ทุกอย่างราบรื่นและเข้ากันได้ แล้ววันหนึ่งที่ใครบางคนพยายามที่จะเรียกใช้มันในหลายไซต์ แทนที่จะเป็นสถานการณ์ง่าย ๆ เช่น: สร้างเว็บไซต์ WordPress แล้ว ติดตั้งและเปิดใช้งานปลั๊กอินแล้ว ตอนนี้คุณมีสถานการณ์ฝันร้ายเช่น: ติดตั้งปลั๊กอินแล้วและเปิดใช้งานเครือข่าย มีการสร้างไซต์ WordPress ใหม่ (หรือร้อย) ในเว็บไซต์หลายไซต์ ในทางทฤษฎีมันควรจะใช้ได้ใช่มั้ย ในทางปฏิบัติมันผิดพลาดในรูปแบบที่น่าตื่นเต้น: $wp_rewrite รัฐอาจมาจากเว็บไซต์ที่ไม่ถูกต้อง switch_to_blog() ไม่ติดตามสถานะการเขียนซ้ำเช่นกัน ส่วน "ภายหลัง" อาจเกิดขึ้นในบล็อกที่แตกต่างกันโดยสิ้นเชิง ปลั๊กอินอื่น ๆทั้งหมดที่คุณควรเล่นได้ดีอาจไม่เปิดใช้งานอย่างสม่ำเสมอในไซต์ต่างๆ ตัวอย่างเช่นคุณสามารถมองเห็นปัญหานี้วิธีการที่พยายามที่จะทำมันขวาพัดออกไป Permalinks บนเว็บไซต์หลักทุกครั้งที่เว็บไซต์ใหม่จะถูกสร้างขึ้น ดังนั้นวิธีที่จะไปเกี่ยวกับปลั๊กอินเชื่อถือล้างเขียนกฎใน MultiSite การ : เมื่อมีการสร้างเว็บไซต์ใหม่สำหรับเว็บไซต์หรือไม่ เมื่อไซต์ที่มีอยู่ถูกเปิดใช้งานจากไม่ได้ใช้งานสำหรับไซต์หรือไม่ เมื่อมีการเปิดใช้งานเครือข่ายปลั๊กอินสำหรับทุกไซต์หรือไม่ เมื่อปลั๊กอินถูกปิดการใช้งานเครือข่ายสำหรับทุกเว็บไซต์? อาจเป็นไปได้ในสถานการณ์อื่น ๆ ที่เกี่ยวข้องกับการเขียนบริบทโลกที่เปลี่ยนแปลงไป?

1
ประเภทโพสต์ที่กำหนดเองสามารถมีหน้าหลักได้หรือไม่?
ฉันเคยเห็นโพสต์มากมายใน Webiverse เกี่ยวกับการกำหนดเพจเป็นพาเรนต์ของประเภทโพสต์ที่กำหนดเอง หลังจากสี่ชั่วโมงฉันไม่สามารถหาทางออกและต้องการความช่วยเหลือ ฉันสร้างหน้า "เกี่ยวกับ" ที่เป็นหน้าหลักของหน้า "คนของเรา" ฉันยังสร้างประเภทโพสต์ที่กำหนดเองที่เรียกว่า "คน" และฉันได้สร้างเทมเพลตหน้าแบบกำหนดเองสำหรับหน้า "คนของเรา" โครงสร้าง Permalink ดูดีจนกระทั่งคุณไปที่หน้า "คน" เดียว ตัวอย่างเช่น: หน้าของ John Smith, ลิงก์ถาวรไม่ถูกต้อง ประเภทโพสต์ที่กำหนดเอง: โครงสร้าง Permalink ที่ต้องการ: / about-us / our-people / john-smith โครงสร้าง Permalink จริง: / คนของเรา / john-smith หน้าคนของเราโครงสร้าง: / เกี่ยวกับเรา / คนของเรา "about-us" เป็นหน้าหนึ่ง "our-people" เป็นหน้าและการเขียนกระสุนสำหรับประเภทโพสต์ที่กำหนดเอง "people" ฉันพยายามเปลี่ยนการตั้งค่าแบบลำดับชั้นและฉันได้ลองเพิ่ม …

4
เปลี่ยน "หน้า" กระสุนในการแบ่งหน้า
คำถามง่าย ๆ เมื่อเลขถูกเปิดใช้งาน URL "site.com/page/2"ที่เปลี่ยนแปลงไป "site.com/paggetto/2"สำหรับเว็บไซต์ของฉันนี้ควรจะเป็น ฉันจะเปลี่ยนกฎการเขียนซ้ำได้อย่างไร ฉันต้องการเปลี่ยนแปลง"author"และตัวแปรอื่น ๆ

2
หน้ากำหนดเองพร้อมปลั๊กอิน
ฉันกำลังพัฒนาปลั๊กอินบางตัวที่ฉันต้องการเปิดใช้งานหน้าเว็บที่กำหนดเอง ในกรณีของฉันบางหน้ากำหนดเองจะมีรูปแบบเช่นแบบฟอร์มการติดต่อ (ไม่ใช่ตัวอักษร) เมื่อผู้ใช้จะกรอกแบบฟอร์มนี้และส่งมันควรจะมีขั้นตอนต่อไปซึ่งจะต้องมีข้อมูลเพิ่มเติม ช่วยบอกว่าหน้าแรกที่มีรูปแบบที่จะอยู่ในและหลังการส่งแบบฟอร์มผู้ใช้ควรจะเปลี่ยนเส้นทางไปwww.domain.tld/custom-page/ www.domain.tld/custom-page/secondเทมเพลตที่มีองค์ประกอบ HTML และรหัส PHP ควรกำหนดเองเช่นกัน ฉันคิดว่าส่วนหนึ่งของปัญหานั้นเป็นไปได้ที่จะประสบความสำเร็จด้วยการเขียน URL ที่กำหนดเองใหม่ แต่ส่วนอื่น ๆ ของฉันไม่เป็นที่รู้จักในขณะนี้ ฉันไม่รู้จริงๆว่าฉันควรเริ่มมองหาที่ไหนและการตั้งชื่อที่ถูกต้องสำหรับปัญหานั้นคืออะไร ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมจริงๆ

2
ทำความเข้าใจกับ add_rewrite_rule
ฉันพยายามadd_rewrite_ruleทำงานเพื่อดึงพารามิเตอร์จาก URL และส่งผ่านไปยังคำขอ เห็นโพสต์จำนวนมากเกี่ยวกับเรื่องนี้ แต่ดูเหมือนจะไม่สามารถใช้งานได้ หาก url เริ่มต้นด้วยสตริงที่แน่นอนฉันต้องการลบออกจาก url และส่งมันเป็น params แบบสอบถาม ตัวอย่างคำขอ URL: http://domain.com/foo/my_page สิ่งนี้จะเปลี่ยนเป็น http://domain.com/my_page?param=foo หาก 'foo' ไม่ปรากฏขึ้นก็ควรทำตามคำขอปกติ ตรรกะนี้ควรใช้กับ URL หน้าหรือโพสต์ประเภท URL ที่กำหนดเองในเว็บไซต์ของฉัน (โดยทั่วไป foo / *) คิดว่ามันจะเป็นเหมือนการส่งผ่านหาก url มี 'foo' ดึงออกมาและจากนั้นเพียงส่งผ่านไปยัง Wordpress เพื่อให้เป็นเรื่องปกติ ฉันมี 'param' ในฐานะ query_vars ที่อนุญาตแล้ว โดยรวมมันจะต้องทำงานต่อไปนี้: / foo / my_page (หน้า) / foo / …

6
ที่ไหนเมื่อใดและจะล้างกฎการเขียนซ้ำอย่างถูกต้องภายในขอบเขตของปลั๊กอินอย่างไร
ฉันมีปัญหาแปลก ๆ นิดหน่อยกับกฎการเขียนซ้ำไม่ได้ล้างอย่างถูกต้อง ผมได้ลองใช้และflush_rewrite_rules();flush_rewrite_rules(true); ฉันยังได้ลอง$wp_rewriteใช้โลกาภิวัตน์$wp_rewrite->flush_rules();และ$wp_rewrite->flush_rules(true); ไม่ปรากฏว่ากำลังล้างกฎการเขียนซ้ำอย่างถูกต้อง การเรียกเหล่านั้นเป็นการล้างกฎการเขียนซ้ำเมื่อถูกเรียก ฉันจะรู้สิ่งนี้ได้อย่างไร การใช้โซลูชันสำหรับการดีบักการเขียนกฎการลบทิ้ง ขณะนี้ฉันได้เขียนกฎใหม่อีกครั้งเมื่อเปิดใช้งานปลั๊กอินและปิดใช้งานปลั๊กอิน ไม่มีปัญหา ฉันมีหน้าการตั้งค่าการจัดการปลั๊กอินสำหรับผู้ใช้เพื่อกำหนดค่าปลั๊กอิน การตั้งค่าบางอย่างปรับโครงสร้าง permalink ดังนั้นกฎการเขียนใหม่จะต้องล้างในหน้าการตั้งค่าการบริหารปลั๊กอิน "บันทึกการตั้งค่า" (ใช้มาตรฐานupdate_option();) เพื่อบันทึกการตั้งค่า ฉันต้องการที่จะทราบว่าประเภทโพสต์ที่กำหนดเองถูกสร้างขึ้นเพื่อให้ตรงกับการตั้งค่าที่ผู้ใช้ระบุทั้งนี้ขึ้นอยู่กับการตั้งค่าที่ระบุ ดังนั้นกฎการเขียนใหม่จะต้องถูกลบทิ้งทันทีหลังจากบันทึกการตั้งค่า นี่คือสิ่งที่ทำงานไม่เหมาะสม โซลูชันลิงก์ด้านบนสำหรับการดีบักกฎการเขียน@toschoซ้ำที่แสดงโดยแสดงว่ากำลังล้างกฎการเขียนซ้ำจำนวนมาก อย่างไรก็ตามเมื่อไปที่ไอเท็มเอกพจน์ชนิดโพสต์ที่กำหนดเองหรือแม้กระทั่งการเก็บถาวรชนิดโพสต์ที่กำหนดเองสำหรับเรื่องนั้นแต่ละข้อผิดพลาดกลับเป็น 404 ประเภทโพสต์ที่กำหนดเองมีการลงทะเบียนอย่างถูกต้องและเหมาะสม ฉันรู้แน่นอนว่าไม่ใช่ปัญหา ติดตามการตั้งค่าหน้าการจัดการปลั๊กอินทันที มีการสร้างประเภทโพสต์ที่กำหนดเองโครงสร้าง Permalink และกฎการเขียนซ้ำทั้งหมดจะพยายามล้างออก ประเภทโพสต์ที่กำหนดเองนั้นจะถูกโหลดเสมอและโหลดinitเหมือนปกติ ด้วยเหตุผลบางอย่างกฎการเขียนซ้ำไม่ได้ล้างข้อมูลอย่างถูกต้องเพราะอย่างที่ฉันพูดก่อนหน้าการไปที่ส่วนเอกพจน์หรือไฟล์เก็บถาวรของประเภทโพสต์ที่กำหนดเองจะแสดงข้อผิดพลาด 404 ตอนนี้ส่วนที่แปลกประหลาดถ้าทั้งหมดที่ฉันทำคือเพียงไปที่หน้าการตั้งค่าการจัดการ permalinks แล้วกลับไปที่ส่วนหน้าเพื่อดูส่วนเอกพจน์หรือเก็บถาวรของประเภทโพสต์ที่กำหนดเองพวกเขาทำงานได้อย่างน่าอัศจรรย์ หน้าการตั้งค่าการจัดการ permalinks ทำอะไรที่ฉันไม่ได้ทำเพื่อให้กฎการเขียนซ้ำล้างอย่างเหมาะสมและของฉันไม่ได้ ฉันหมายถึงในฐานะวิธีการชั่วคราวฉันเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าการตั้งค่าการจัดการ Permalinks หลังจากบันทึกหน้าการตั้งค่าการดูแลระบบปลั๊กอิน แต่นี่ไม่ใช่วิธีแก้ปัญหาในอุดมคติ ฉันต้องการกฎการเขียนซ้ำเพียงแค่ล้างอย่างถูกต้องภายในรหัสปลั๊กอินของฉัน มีบางจุดใน WordPress ที่ล้างกฎการเขียนใหม่เพียงแค่ไม่ล้างกฎทั้งหมดอีกต่อไปหรือไม่ admin_menu - หน้าการตั้งค่าปลั๊กอินถูกเพิ่มในการจัดการ …

2
วิธีที่ดีที่สุดในการ flush_rewrite_rules สำหรับประเภทโพสต์ที่กำหนดเองในปลั๊กอิน mu-plugins?
ฉันกำลังเขียนปลั๊กอินที่สร้างประเภทโพสต์ที่กำหนดเอง (เหนือสิ่งอื่นใด) มันเป็นปลั๊กอิน MultiSite การและอาศัยอยู่ในไดเรกทอรีMU-ปลั๊กอิน แนวปฏิบัติที่ดีที่สุดสำหรับการจัดการflush_rewrite_rules ()ในสถานการณ์นี้คืออะไร สำหรับปลั๊กอิน 'ปกติ' ที่คุณต้องทำในฮุคการเปิดใช้งานซึ่งเป็นไปไม่ได้สำหรับปลั๊กอินที่ต้องใช้เนื่องจากตะขอเหล่านั้นไม่พร้อมใช้งาน เนื่องจากสิ่งนี้น่าจะเป็นเหตุการณ์ "ครั้งเดียว" หลังจากลงทะเบียนประเภทโพสต์ที่กำหนดเองมันจะทำให้การทำอะไรเช่นนี้ในชั้นเรียนของฉันที่ลงทะเบียน CPT: private function check_flush_my_CPT() { global $wp_rewrite; if ( !get_option('my_plugin_firstrun') ) { $wp_rewrite->init(); $wp_rewrite->flush_rules(true); update_option('my_plugin_firstrun', 'yes'); } } public function register_my_CPT() { // do all the CPT setup steps for the $args array... register_post_type('my_CPT', $args); $this->check_flush_my_CPT(); } …

3
WordPress Rewrite กฎสำหรับประเภทโพสต์ที่กำหนดเองและ Taxonomy
ฉันพบว่าสถานที่นี้เป็นแหล่งข้อมูลที่ดีในอดีตผ่าน Googling มากมายสำหรับปัญหาที่ฉันพบ คำถามของฉันเกี่ยวกับกฎการเขียนซ้ำอย่างละเอียดใช้ WordPress ฉันได้ตั้งค่าประเภทโพสต์ที่กำหนดเองที่เรียกว่าโครงการและฉันได้ลงทะเบียนอนุกรมวิธานที่กำหนดเองที่เรียกว่าโครงการ ทุกอย่างใช้งานได้ดียกเว้นตัวเลือกกระสุนเขียนใหม่ในขณะที่พวกเขาลงเอยด้วยความขัดแย้ง - น่าจะเกิดจากกฎการเขียนซ้ำ โดยทั่วไปนี่คือโครงสร้างที่ฉันต้องการบรรลุ: example.com/work/%taxonomy%/%post_name%/ (สำหรับโพสต์) example.com/work/%taxonomy%/ (โพสต์รายการที่เป็นของคำเฉพาะอนุกรมวิธาน) example.com/work/ (ไปที่ page-work.php ซึ่งรวมถึง taxonomy.php เพื่อแสดงรายการโพสต์ทั้งหมดที่เกี่ยวข้องกับ taxonomy นั้น) นี่คือรหัสที่ฉันมีมา แต่ฉันต้องการความช่วยเหลือในการเขียนกฎ WP_Rewrite เนื่องจากนี่เป็นบิตที่ฉันนิ่งเงียบเล็กน้อย $labels = array( 'name' => _x('Projects', 'post type general name'), 'singular_name' => _x('Project', 'post type singular name'), 'add_new' => _x('Add New', 'project item'), 'add_new_item' …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.