Apa perbedaan antara get_post_permalink dan get_permalink?

11

Saya sudah membaca dokumentasinya get_post_permalink()dan get_permalink()dan tidak mengerti perbedaan keduanya. Mungkin karena saya tidak mengerti tujuan $leavenamedan $sampleparameter. Adakah yang bisa menjelaskannya, dan ketika satu fungsi akan lebih bermanfaat daripada yang lain? Terima kasih!

Michelle
sumber

Jawaban:

6

Fungsi get_post_permalink()mengambil tautan ke pos tergantung pada tautan "permanen" ditambah aturan penulisan ulang kustom Anda yang berubah ?p=123menjadi misalnya my-beautiful-sunday-diary. The get_permalink()fungsi lebih "dasar" tapi juga lebih fleksibel dalam apa yang dilakukannya: Untuk post_typeof

  • page, itu menggunakan get_page_link()
  • attachment, itu menggunakan get_attachment_link()
  • post, itu menggunakan get_post_link()

Ini juga menangani tampilan permalinks termlike categorydan date. Pada akhirnya, itu menggantikan tautan "cantik" di Anda home_url()atau hanya mengembalikan tautan mentah jika tidak ada aturan penulisan ulang khusus yang ditetapkan. Akhirnya ia melampirkan filter umum:

/**
 * 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 );

Harapan yang mengklarifikasi topik.

Protip: Jika Anda perlu peramlinks perubahan plugin, pergi dengan filter tertentu di dalam get_attachment_link(), get_post_link(), dll Hanya jika Anda baik bekerja pada satu situs dan tidak berencana untuk mendistribusikan kode Anda atau jika Anda menulis sebuah plugin menargetkan hanya menulis ulang barang, kemudian pergi dengan filter generik di atas. Jika tidak, Anda akan mencoba setiap upaya pembuat tema dan memulai balapan prioritas panggilan balik.

kaisar
sumber
2

Orang lain pasti akan menjelaskan lebih baik daripada saya. Karena saya hanya menggunakanget_permalink()

Mereka sebagian besar mirip karena mereka berdua mengembalikan permalink posting, get_permalinkgunakan get_post_permalink(untuk post_types) dan dapat difilter. Ini juga akan digunakan untuk mengambil tautan halaman, lampiran ... yang get_post_permalinktampaknya didedikasikan untuk post_types.

EDIT:

Tentang penggunaan $leavename, sepertinya tidak perlu untuk menggunakan front-end (dan bahkan di back-end) karena mengembalikan sipastruktur slast, sesuai dengan jenis posting tautan.

 echo get_permalink(123, true);

Kembalikan skema penulisan ulang untuk tautan, yang bisa digunakan

Pos:

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

Produk:

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

$ leavename digunakan di get_permalink () dalam array $ rewritecode dan dimasukkan sebagai parameter pertama pada baris fungsi 221

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

Dapat bermanfaat untuk menemukan siput penulisan ulang untuk tautan untuk pengembang (tapi saya pikir ada cara yang lebih baik untuk melakukan ini)

Semoga seseorang akan memberikan rincian lebih lanjut.

Benoti
sumber
Terima kasih! Saya masih tidak begitu jelas tentang ini. Pernahkah Anda menggunakan $ leavename untuk mengubah struktur permalink? Mengapa dan bagaimana orang melakukan itu? Dan maksud Anda get_post_permalink () digunakan untuk mengambil arsip, atau apakah Anda merujuk ke get_permalink () di sana? Saya belum pernah melihat get_post_permalink () digunakan sampai hari ini ketika saya berlari di atasnya sedang digunakan persis seperti get_permalink () jadi saya tidak jelas perbedaannya.
Michelle
Saya berbicara tentang get_permalink, Anda memilikinya di sumbernya, ia mengambil halaman penulis, kategori dll ... Ini akan melakukan lebih dari get_post_permalink. Get_permalink adalah fungsi template jika saya tidak salah, dan sangat kuat.
Benoti
Saya mengerti, saya tidak mengerti kapan kita perlu atau ingin menggunakan get_post_permalink () - dapatkah Anda memberikan contoh kode? Dan tahukah Anda apa yang $ leavename dan $ sample lakukan? Saya hanya pernah menggunakan get_permalink () juga :-)
Michelle
2
$leavenamedigunakan di admin, untuk mendapatkan struktur permalink sehingga dapat menghasilkan antarmuka yang memungkinkan Anda mengedit siput posting.
Milo