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.