ความแตกต่างระหว่าง get_post_permalink และ get_permalink คืออะไร?


11

ฉันอ่านเอกสารเกี่ยวกับget_post_permalink()และget_permalink()ไม่เข้าใจความแตกต่างระหว่างทั้งสอง อาจเป็นเพราะฉันไม่เข้าใจวัตถุประสงค์$leavenameและ$sampleพารามิเตอร์ ใครสามารถอธิบายสิ่งเหล่านั้นและเมื่อฟังก์ชั่นหนึ่งจะมีประโยชน์มากกว่าอีกฟังก์ชั่น? ขอบคุณ!

คำตอบ:


6

get_post_permalink()funciton เรียกเชื่อมโยงไปยังโพสต์ขึ้นอยู่กับการเชื่อมโยง "ถาวร" บวกเขียนกฎของคุณเองที่มีการเปลี่ยนแปลงเข้าสำหรับเช่น?p=123 ฟังก์ชั่นอื่น ๆ อีกมากมาย "พื้นฐาน" เช่นกัน แต่มากขึ้นหลากหลายในสิ่งที่มันไม่: สำหรับของmy-beautiful-sunday-diaryget_permalink()post_type

  • pageมันใช้ get_page_link()
  • attachmentมันใช้ get_attachment_link()
  • postมันใช้ get_post_link()

นอกจากนี้ยังจัดการการแสดงของterms like categoryและวันที่ permalinks ในตอนท้ายมันจะแทนที่ลิงก์ "สวย" ในของคุณhome_url()หรือเพียงแค่ส่งคืนลิงก์ดิบหากไม่มีกฎการเขียนซ้ำที่กำหนดเอง ในที่สุดมันก็แนบตัวกรองทั่วไป:

/**
 * Filters the permalink for a post.
 *
 * Only applies to posts with post_type of 'post'.
 *
 * @since 1.5.0
 *
 * @param string  $permalink The post's permalink.
 * @param WP_Post $post      The post in question.
 * @param bool    $leavename Whether to keep the post name.
 */
return apply_filters( 'post_link', $permalink, $post, $leavename );

หวังว่าจะชี้แจงหัวข้อ

protip: ถ้าคุณต้องการที่จะเปลี่ยนแปลงใน peramlinks ปลั๊กอินไปกับฟิลเตอร์ที่เฉพาะเจาะจงภายในget_attachment_link(), get_post_link()ฯลฯ เฉพาะในกรณีที่คุณกำลังทำงานอยู่บนเว็บไซต์เดียวและไม่ได้วางแผนที่จะแจกจ่ายรหัสของคุณหรือถ้าคุณเขียนปลั๊กอินกำหนดเป้าหมายเพียงเขียน เนื้อหาจากนั้นไปที่ตัวกรองทั่วไปด้านบน ไม่เช่นนั้นคุณจะได้รับความพยายามจากผู้แต่งธีมและเริ่มการแข่งขันที่มีลำดับความสำคัญในการติดต่อกลับ


2

คนอื่นจะอธิบายได้ดีกว่าฉันอย่างแน่นอน ตามที่ฉันใช้เท่านั้นget_permalink()

ส่วนใหญ่คล้ายกันเนื่องจากทั้งคู่ส่งคืนลิงก์โพสต์get_permalinkใช้get_post_permalink(สำหรับ post_types) และสามารถกรองได้ นอกจากนี้ยังจะใช้เพื่อเรียกค้นลิงค์หน้าเอกสารแนบ ... ซึ่งget_post_permalinkดูเหมือนว่าจะทุ่มเทให้กับ post_types

แก้ไข:

เกี่ยวกับการใช้งาน$leavenameดูเหมือนว่าไม่จำเป็นต้องใช้ front-end (และแม้แต่ใน back-end) เพราะมันจะคืนค่าตัวบุ้งกี๋ permast โครงสร้างตามประเภทโพสต์ของลิงค์

 echo get_permalink(123, true);

ส่งคืนสกีมาที่เขียนใหม่สำหรับลิงก์ซึ่งสามารถใช้ได้

โพสต์:

 http://example.com/%postname%/

ผลิตภัณฑ์:

 http://example.com/%product%/

$ leavename ถูกใช้ใน get_permalink () ใน $ rewritecode array และวางเป็นพารามิเตอร์แรกในบรรทัดฟังก์ชัน 221

$permalink = home_url( str_replace($rewritecode, $rewritereplace, $permalink) );

มันเป็นประโยชน์อย่างยิ่งที่จะค้นพบรอยบุ้งเขียนใหม่สำหรับลิงค์สำหรับผู้พัฒนา (แต่ฉันคิดว่ามีวิธีที่ดีกว่าในการทำสิ่งนี้)

หวังว่าใครบางคนจะให้รายละเอียดเพิ่มเติม


ขอบคุณ! ฉันยังไม่ชัดเจนในเรื่องนี้ คุณเคยใช้คำสั่ง $ leavename เพื่อเปลี่ยนโครงสร้างความคิดเห็นหรือไม่ ทำไมและจะทำอย่างนั้นได้อย่างไร และคุณหมายถึงว่า get_post_permalink () ถูกใช้เพื่อเรียกคืนคลังข้อมูลหรือคุณอ้างถึง get_permalink () ที่นั่นไหม ฉันไม่เคยเห็น get_post_permalink () ใช้จนกระทั่งวันนี้เมื่อฉันวิ่งข้ามมันถูกใช้เหมือน get_permalink () ดังนั้นฉันจึงไม่เห็นความแตกต่าง
มิเชล

ฉันกำลังพูดถึง get_permalink คุณมีอยู่ในแหล่งที่มาดึงหน้าผู้แต่งหมวดหมู่ ฯลฯ ... มันจะทำมากกว่า get_post_permalink Get_permalink เป็นฟังก์ชั่นเทมเพลตถ้าฉันไม่เข้าใจผิดและมีประสิทธิภาพ
เบโนติ

เข้าใจฉันแค่ไม่ได้รับเมื่อเราต้องการหรือต้องการใช้ get_post_permalink () - คุณสามารถยกตัวอย่างรหัสได้หรือไม่ และคุณรู้หรือไม่ว่า $ leavename และ $ sample ทำอะไร ฉันเคยใช้ get_permalink () เช่นกัน :-)
มิเชล

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