В чем разница между 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()

Он также обрабатывает отображение постоянных ссылок типа terms 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: Если вам нужно peramlinks изменения в плагине, идут с определенными фильтрами внутри get_attachment_link(), get_post_link()и т.д. Только если вы либо работаете на одном месте и не планируете распространять код или если вы пишете плагин ориентируется только переписать вещи, затем перейдите с общим фильтром выше. В противном случае вы уничтожите все усилия авторов темы и начнете приоритетную гонку.


2

Кто-то наверняка объяснит лучше, чем я. Как я только используюget_permalink()

Они в основном похожи, поскольку оба возвращают постоянную ссылку post, 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%/

$ leavename используется в get_permalink () в массиве $ rewritecode и указывается в качестве первого параметра в строке функции 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используется в admin, чтобы получить структуру постоянных ссылок, чтобы она могла генерировать интерфейс, который позволяет вам редактировать слаг поста.
Майло
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.