¿Cuál es la diferencia entre get_post_permalink y get_permalink?

9

He leído la documentación en get_post_permalink() y get_permalink() y no entiendo la diferencia entre los dos. Puede ser porque no entiendo el propósito de los parámetros $leavename y $sample . ¿Puede alguien explicar eso, y cuando una función sería más útil que la otra? Gracias!

    
pregunta Michelle 17.11.2016 - 17:43

2 respuestas

6

La función get_post_permalink() recupera el enlace a una publicación en función de su enlace "permanente" más su reglas de reescritura personalizadas que cambian ?p=123 en, por ejemplo, %código%. La función my-beautiful-sunday-diary es más "básica" pero también más versátil en lo que hace: Para un get_permalink() de

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

También controla la visualización de get_post_link() s como term y los permalinks de fecha. Al final, reemplaza el enlace "bonito" en su category o simplemente devuelve el enlace sin formato si no se asignaron reglas de reescritura personalizadas. Finalmente se adjunta un 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 eso aclare el tema.

ProTip: si necesita cambiar los enlaces permanentes en un complemento, vaya con los filtros específicos dentro de home_url() , get_attachment_link() , etc. Solo si está trabajando en un solo sitio y no planea distribuir su código o Si está escribiendo un complemento dirigido solo a reescribir cosas, vaya con el filtro genérico de arriba. De lo contrario, detendrá los esfuerzos de todos los autores de temas e iniciará una carrera de prioridad de devolución de llamada.

    
respondido por el kaiser 22.11.2016 - 22:41
1

Alguien más lo explicará mejor que yo. Como solo uso get_permalink()

En su mayoría son similares, ya que ambos devuelven el enlace permanente a la publicación, get_permalink usa get_post_permalink (para post_types) y se pueden filtrar. También se utilizará para recuperar un enlace de página, un archivo adjunto ... donde get_post_permalink parece estar dedicado a post_types.

EDITAR:

Sobre el uso de $leavename , parece que no hay necesidad de un uso de front-end (e incluso en el back-end) ya que devuelve el slug de estructura de permeabilidad, de acuerdo con el tipo de publicación del enlace.

 echo get_permalink(123, true);

Devuelva el esquema de reescritura para el enlace, que podría usarse

Una publicación:

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

Un producto:

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

$ leavename se usa en get_permalink () en la matriz $ rewritecode y se coloca como primer parámetro en la línea de función 221

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

Puede ser útil descubrir el slug de reescritura para un enlace para un desarrollador (pero creo que hay una mejor manera de hacerlo)

Espero que alguien dé más detalles.

    
respondido por el Benoti 17.11.2016 - 21:26

Lea otras preguntas en las etiquetas