Qual é a diferença entre get_post_permalink e get_permalink?

11

Eu li a documentação sobre get_post_permalink()e get_permalink()e não entendem a diferença entre os dois. Pode ser porque eu não entendo o propósito dos parâmetros $leavenamee $sample. Alguém pode explicar isso e quando uma função seria mais útil que a outra? Obrigado!

Michelle
fonte

Respostas:

6

A função get_post_permalink()busca o link em uma postagem, dependendo do link "permanente", mais as regras de reescrita personalizadas que são alteradas ?p=123para, por exemplo my-beautiful-sunday-diary. A get_permalink()função é mais "básico", mas bem mais versátil no que faz: Para um post_typedos

  • page, usa get_page_link()
  • attachment, usa get_attachment_link()
  • post, usa get_post_link()

Ele também lida com a exibição de links per terms like categorye date. No final, ele substitui o link "bonito" no seu home_url()ou apenas retorna o link bruto se nenhuma regra de reescrita personalizada tiver sido atribuída. Finalmente, anexa um filtro genérico:

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

Espero que esclareça o tópico.

Protip: Se você precisa peramlinks mudança em um plugin, vá com os filtros específicos dentro get_attachment_link(), get_post_link()etc. Somente se você está ou trabalhando em um único local e não está planejando distribuir o seu código ou se você estiver escrevendo um plugin targetting única reescrever coisas, então vá com o filtro genérico acima. Caso contrário, você reduzirá os esforços de todos os autores de temas e iniciará uma corrida de prioridade de retorno de chamada.

kaiser
fonte
2

Alguém certamente vai explicar melhor do que eu. Como eu só usoget_permalink()

Eles são mais parecidos, pois retornam o link permanente da postagem, get_permalinkusam get_post_permalink(para post_types) e podem ser filtrados. Também será usado para recuperar um link de página, anexo ... onde get_post_permalinkparece ser dedicado a post_types.

EDITAR:

Sobre o uso de $leavename, parece que não há necessidade de um uso de front-end (e mesmo no back-end), pois ele retorna a lesma da perestrutura, de acordo com o tipo de post do link.

 echo get_permalink(123, true);

Retorne o esquema de reescrita para o link, que poderia ser usado

Uma postagem:

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

Um produto:

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

$ leavename é usado no get_permalink () na matriz $ rewritecode e colocado como o primeiro parâmetro na linha de função 221

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

Pode ser útil descobrir a lesma reescrita de um link para um desenvolvedor (mas acho que existe uma maneira melhor de fazer isso)

Espero que alguém dê mais detalhes.

Benoti
fonte
Obrigado! Ainda não estou muito claro sobre isso. Você já usou o $ leavename para alterar a estrutura do link permanente? Por que e como alguém faria isso? E você quer dizer que get_post_permalink () é usado para recuperar arquivos, ou você está se referindo a get_permalink () lá? Eu nunca vi get_post_permalink () usado até hoje, quando o encontrei exatamente como get_permalink (), então não estou claro sobre a diferença.
31716 Michelle
Estou falando de get_permalink, você o tem na fonte, ele recupera a página do autor, categorias etc ... Isso fará mais do que o get_post_permalink. Get_permalink é uma função de modelo, se não me engano, e é poderoso.
Benoti 17/11/2016
Entendido, não estou conseguindo entender quando precisaríamos ou usaríamos get_post_permalink () - você pode dar um exemplo de código? E você sabe o que $ leavename e $ sample fazem? Eu só nunca utilizado get_permalink (), bem :-)
Michelle
2
$leavenameé usado em admin, para obter a estrutura do permalink para que possa gerar a interface que permite editar a lesma de uma postagem.
Milo