Qual é a diferença entre get_post_permalink e get_permalink?

9

Eu li a documentação em get_post_permalink() e get_permalink() e não entende a diferença entre os dois. Pode ser porque não entendi o objetivo dos parâmetros $leavename e $sample . Alguém pode explicar isso, e quando uma função seria mais útil que a outra? Obrigado!

    
por Michelle 17.11.2016 / 17:43

2 respostas

6

A função get_post_permalink() busca o link para um post, dependendo do link "permanente" regras de reescrita personalizadas que alteram ?p=123 para, por exemplo, %código%. A função my-beautiful-sunday-diary é mais "básica", mas também mais versátil no que faz: por um get_permalink() de

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

Ele também lida com a exibição de get_post_link() s como term e permalinks de data. No final, ele substitui o link "bonito" no seu category ou apenas retorna o link bruto se nenhuma regra de reconfiguração personalizada foi atribuída. Por fim, 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 isso esclarece o assunto.

ProTip: Se você precisar alterar os peramlinks em um plug-in, use os filtros específicos em home_url() , get_attachment_link() , etc. Somente se você estiver trabalhando em um único site e não estiver planejando distribuir seu código ou Se você está escrevendo um plugin que visa apenas reescrever coisas, então vá com o filtro genérico acima. Senão você vai armar todos os esforços de autores de temas e iniciar uma corrida prioritária de callback.

    
por kaiser 22.11.2016 / 22:41
1

Alguém mais explicará melhor que eu. Como eu só uso get_permalink()

Eles são semelhantes, pois retornam o permalink da postagem, get_permalink use 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_permalink parece ser dedicado a post_types.

EDITAR:

Sobre o uso de $leavename , parece que não há necessidade de um uso front-end (e mesmo no back-end), pois ele retorna o slug de permastructure, de acordo com o tipo de post do link. / p>

 echo get_permalink(123, true);

Retorna o esquema de reescrita do link, que pode 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 primeiro parâmetro na linha de função 221

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

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

Espero que alguém forneça mais detalhes.

    
por Benoti 17.11.2016 / 21:26

Tags