Яка різниця між get_post_permalink та get_permalink?


11

Я читав документацію get_post_permalink()і get_permalink()не розумію різниці між ними. Це може бути тому, що я не розумію призначення $leavenameта $sampleпараметрів. Чи може хтось пояснити це, і коли одна функція була б кориснішою за іншу? Дякую!

Відповіді:


6

Функціонал get_post_permalink()отримує посилання на публікацію залежно від її "постійної" посилання плюс ваші власні правила перезапису, які змінюються, ?p=123наприклад my-beautiful-sunday-diary. get_permalink()Функція є більш «основний» , а й більш універсальний в тому, що вона робить: Для post_typeз

  • page, він використовує get_page_link()
  • attachment, він використовує get_attachment_link()
  • post, він використовує get_post_link()

Він також обробляє відображення постійних посилань на termзразок s categoryта дати. Зрештою, він або замінює посилання "досить" у вашому, 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: Якщо вам потрібно змінити перемлік посилання в плагіні, перейдіть із специфічними фільтрами всередину get_attachment_link()і get_post_link()т. Д. Тільки якщо ви працюєте на одному сайті і не плануєте поширювати свій код, або якщо ви пишете плагін, орієнтований лише на перезапис речі, потім перейдіть із загальним фільтром вище. В іншому випадку ви змусите всі сили авторів теми і розпочнете гонку пріоритетності зворотного дзвінка.


2

Хтось інший, безумовно, пояснить краще за мене. Як я тільки використовуюget_permalink()

Вони здебільшого схожі, оскільки обидва вони повертають посилання постійна посилання, get_permalinkвикористовують get_post_permalink(для post_types) і можуть фільтрувати. Це також буде корисним для отримання посилання на сторінку, вкладення ... де, get_post_permalinkсхоже, присвячено post_types.

Редагувати:

Щодо використання $leavename, виглядає так, що немає необхідності використовувати фронт-енд (і навіть у зворотному), оскільки він повертає пермаструктурний слиз, відповідно до посту типу посилання.

 echo get_permalink(123, true);

Поверніть схему перезапису посилання, яке може бути корисним

Допис:

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

Товар:

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

$ Leaname - це використання у get_permalink () у масиві $ rewritecode та поставлений як перший параметр у рядку 221

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

Це може бути корисним для виявлення переписаного кулі для посилання для розробника (але я думаю, що є кращий спосіб зробити це)

Сподіваюся, хтось дасть більше деталей.


Дякую! Я все ще не дуже зрозумілий з цього приводу. Чи використовували ви коли-небудь $ namename для зміни структури постійної посилання? Чому і як би це зробити? А ви маєте на увазі, що get_post_permalink () використовується для отримання архівів, або ви маєте на увазі там get_permalink ()? Я ніколи не бачив, щоб get_post_permalink () використовувався до сьогодні, коли я натрапив на нього, використовувався так само, як get_permalink (), тому мені не зрозуміло різницю.
Мішель

Я говорю про get_permalink, у вас це є у джерелі, він отримує сторінку автора, категорії тощо ... Це зробить більше, ніж get_post_permalink. Get_permalink - це шаблонна функція, якщо я не помиляюся, і є потужною.
Беноті

Зрозумів, я просто не отримую, коли нам коли-небудь потрібно або хочемо використовувати get_post_permalink () - чи можна навести приклад коду? А чи знаєте ви, що роблять $ ostavname та $ sample? Я також коли-небудь використовував get_permalink () також :-)
Мішель

2
$leavenameвикористовується в адміністраторі, щоб отримати структуру постійної посилання, щоб вона могла генерувати інтерфейс, що дозволяє редагувати кулі публікації.
Міло
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.