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

11

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

Michelle
fuente

Respuestas:

6

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

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

También maneja la visualización de enlaces permanentes de me termgusta categoryy fecha. Al final, reemplaza el enlace "bonito" en su home_url()o simplemente devuelve el enlace sin formato si no se asignaron reglas de reescritura personalizadas. Finalmente 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 aclare el tema.

ProTip: si necesita cambiar los enlaces de peram en un complemento, vaya con los filtros específicos en su interior get_attachment_link(), get_post_link()etc. Solo si está trabajando en un solo sitio y no planea distribuir su código o si está escribiendo un complemento dirigido a reescribir cosas, luego ve con el filtro genérico anterior. De lo contrario, bombardearás todos los esfuerzos de los autores de temas y comenzarás una carrera prioritaria de devolución de llamada.

emperador
fuente
2

Alguien más seguramente explicará mejor que yo. Como solo usoget_permalink()

En su mayoría son similares, ya que ambos devuelven el enlace permanente posterior, el get_permalinkuso get_post_permalink(para post_types) y se pueden filtrar. También se usará para recuperar un enlace de página, un archivo adjunto ... donde get_post_permalinkparece 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 permastructure, de acuerdo con el tipo de publicación del enlace.

 echo get_permalink(123, true);

Devuelve 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 la babosa de reescritura de un enlace para un desarrollador (pero creo que hay una mejor manera de hacerlo)

Espero que alguien dé más detalles.

Benoti
fuente
¡Gracias! Sin embargo, todavía no estoy muy claro en esto. ¿Alguna vez ha usado $ leavename para cambiar la estructura de enlaces permanentes? ¿Por qué y cómo se haría eso? ¿Y quiere decir que get_post_permalink () se utiliza para recuperar archivos, o se refiere a get_permalink () allí? Nunca había visto que get_post_permalink () se usara hasta hoy, cuando lo encontré, se usaba exactamente como get_permalink (), así que no tengo clara la diferencia.
Michelle
Estoy hablando de get_permalink, lo tienes en la fuente, recupera la página del autor, las categorías, etc. Hará más que get_post_permalink. Get_permalink es una función de plantilla si no me equivoco, y es potente.
Benoti
Entendido, simplemente no entiendo cuando alguna vez necesitamos o queremos usar get_post_permalink (), ¿puede dar un ejemplo de código? ¿Y sabes qué hacen $ leavename y $ sample? Solo he usado get_permalink () también :-)
Michelle
2
$leavenamese usa en admin, para obtener la estructura de enlaces permanentes para que pueda generar la interfaz que le permite editar la babosa de una publicación.
Milo