web-dev-qa-db-fra.com

Quelle est la différence entre get_post_permalink et get_permalink?

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

8
Michelle

La fonction get_post_permalink() funciton récupère le lien vers un message en fonction de son lien "permanent", ainsi que de vos règles de réécriture personnalisées qui modifient ?p=123 en par exemple. my-beautiful-sunday-diary. La fonction get_permalink() est plus "basique" mais également plus polyvalente: Pour un post_type de

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

Il gère également l'affichage de terms tels que category et des permaliens de date. À la fin, il remplace le "joli" lien dans votre home_url() ou renvoie simplement le lien brut si aucune règle de réécriture personnalisée n'a été attribué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.

Conseil: si vous devez modifier peramlinks dans un plugin, utilisez les filtres spécifiques dans get_attachment_link(), get_post_link(), etc. Uniquement si vous travaillez sur un seul site et ne prévoyez pas de distribuer votre code ou si vous écrivez un plugin ciblant seulement réécrire les choses, puis aller avec le filtre générique ci-dessus. Sinon, vous allez mettre tous les efforts des auteurs de thèmes à l'ordre du jour et lancer une course prioritaire de rappel.

5
kaiser

Quelqu'un expliquera certainement mieux que moi. Comme je n’utilise que get_permalink()

Ils sont pour la plupart similaires car ils renvoient tous les deux le permalien post, get_permalink utilisez 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_permalink semble être dédié aux post_types.

MODIFIER:

En ce qui concerne l'utilisation de $leavename, il semble qu'il ne soit pas nécessaire d'utiliser un serveur frontal (et même dans le serveur principal) car il renvoie le slug de permastructure, en fonction du 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 get_permalink () dans le tableau $ rewritecode et est placé en tant que 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 comme lien pour un développeur (mais je pense qu’il existe un meilleur moyen de le faire).

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

1
Benoti