Quelle est la différence entre get_post_permalink et get_permalink?


11

J'ai lu la documentation get_post_permalink()et get_permalink()et ne comprennent pas la différence entre les deux. C'est peut-être parce que je ne comprends pas le but des paramètres $leavenameet $sample. Quelqu'un peut-il expliquer cela et quand une fonction serait plus utile que l'autre? Merci!

Réponses:


6

La get_post_permalink()fonction récupère le lien vers un article en fonction de son lien "permanent" et de vos règles de réécriture personnalisées qui se transforment ?p=123par exemple my-beautiful-sunday-diary. La get_permalink()fonction est plus « basique » mais aussi bien plus polyvalent dans ce qu'il fait: Pour post_typede

  • page, il utilise get_page_link()
  • attachment, il utilise get_attachment_link()
  • post, il utilise get_post_link()

Il gère également l'affichage des permaliens terms like categoryet date. À la fin, il remplace soit le "joli" lien dans votre, home_url()soit renvoie simplement le lien brut si aucune règle de réécriture personnalisée n'a été affectée. Enfin, il attache un filtre générique:

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

J'espère que cela clarifie le sujet.

Astuce: si vous devez modifier des liens péramatiques dans un plug-in, utilisez les filtres spécifiques à l'intérieur get_attachment_link(), get_post_link()etc. trucs, puis allez avec le filtre générique ci-dessus. Sinon, vous nuke tous les efforts des auteurs de thème et commencez une course prioritaire de rappel.


2

Quelqu'un d'autre expliquera certainement mieux que moi. Comme j'utilise seulementget_permalink()

Ils sont pour la plupart similaires car ils renvoient tous les deux le permalien post, get_permalinkutilisent get_post_permalink(pour post_types) et peuvent être filtrés. Il sera également utilisé pour récupérer un lien de page, une pièce jointe ... où get_post_permalinksemble être dédié aux post_types.

ÉDITER:

À propos de l'utilisation de $leavename, il semble qu'il n'y ait pas besoin d'une utilisation frontale (et même dans le back-end) car il retourne le slug de permastructure, selon le type de publication du lien.

 echo get_permalink(123, true);

Renvoie le schéma de réécriture du lien, qui pourrait être utilisé

Une publication:

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

Un produit:

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

$ leavename est utilisé dans le get_permalink () dans le tableau $ rewritecode et mis comme premier paramètre dans la ligne de fonction 221

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

Il peut être utile de découvrir le slug de réécriture pour un lien pour un développeur (mais je pense qu'il y a une meilleure façon de le faire)

J'espère que quelqu'un vous donnera plus de détails.


Merci! Je ne suis toujours pas vraiment clair à ce sujet. Avez-vous déjà utilisé $ leavename pour modifier la structure du permalien? Pourquoi et comment ferait-on cela? Et voulez-vous dire que get_post_permalink () est utilisé pour récupérer des archives, ou faites-vous référence à get_permalink () là-bas? Je n'ai jamais vu get_post_permalink () utilisé jusqu'à aujourd'hui, quand je l'ai croisé utilisé exactement comme get_permalink (), donc je ne suis pas clair sur la différence.
Michelle

Je parle de get_permalink, vous l'avez dans la source, il récupère la page d'auteur, les catégories etc ... Il fera plus que get_post_permalink. Get_permalink est une fonction de modèle si je ne me trompe pas, et est puissante.
Benoti

Compris, je ne comprends tout simplement pas quand nous aurions besoin ou que nous voudrions utiliser get_post_permalink () - pouvez-vous donner un exemple de code? Et savez-vous ce que font $ leavename et $ sample? Je n'ai jamais utilisé get_permalink () aussi :-)
Michelle

2
$leavenameest utilisé dans admin, pour obtenir la structure de permalien afin qu'il puisse générer l'interface qui vous permet de modifier le slug d'un article.
Milo
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.