¿Cómo obtener la identificación de la publicación desde el enlace permanente (URL bonita)?

4 minutos de lectura

¿Cómo obtener la identificación de la publicación desde el enlace permanente (URL bonita)?

  • @Yuliy: Esa es probablemente la mejor respuesta aquí; Le sugiero que lo convierta en una respuesta real y no solo en un comentario. 🙂

    – gato

    2 de noviembre de 2010 a las 5:15

  • @Yuliy No encontré, ¿podrías ayudarme?

    – Jeff Gilbert

    2 de noviembre de 2010 a las 5:24

  • @Jeaffrey Gilbert – ¿Puede explicar más lo que está tratando de lograr realmente? Hay varias respuestas “correctas”, pero cada una es diferente y cada una dependería de cuál sea su situación y de lo que esté tratando de lograr. Por cierto, es posible que desee publicar esta pregunta en el sitio hermano de SO Respuestas de WordPress: wordpress.stackexchange.com.

    – Mike Schinkel

    2 de noviembre de 2010 a las 9:00

  • @MikeSchinkel Estoy tratando de obtener la ID de la publicación del enlace permanente personalizado (%categoría%/%nombre de la publicación%) mediante una llamada ajax. +1 para el sitio.

    – Jeff Gilbert

    2 de noviembre de 2010 a las 13:05

  • @Jeaffrey Gilbert – Por llamada AJAX, ¿te refieres a Javascript o PHP? Todavía no entiendo tu contexto. ¿Puede publicar parte de su código que muestre dónde necesita obtener la identificación de la publicación?

    – Mike Schinkel

    3 de noviembre de 2010 a las 3:17

avatar de usuario
kovshenin

deberías estar bien con url_to_postid()[see documentation] que se encuentra en rewrite.php. Lo usé en un complemento mío el año pasado, funciona de maravilla.

  • Bueno. Está documentado ahora, al menos. codex.wordpress.org/Function_Reference/url_to_postid

    – vmassuchetto

    11 de abril de 2012 a las 11:27

  • También debe tener en cuenta que la documentación menciona: “Tenga en cuenta que esto no devuelve la identificación de la publicación para los tipos de publicaciones personalizadas”.

    – Mazateco

    11 de noviembre de 2012 a las 12:47

  • A partir de WordPress 3.7.0 también se admiten tipos de publicaciones personalizadas. Vea el enlace de arriba para más detalles.

    – Simo A.

    28 de diciembre de 2013 a las 21:10

avatar de usuario
memes

Tengo una función dedicada (y documentada) para eso:

get_page_by_path( $page_path, $output, $post_type );

Recupera una página dada su ruta.

Dónde $page_path es

[…] el equivalente de la consulta ‘nombre de página’, como en: ‘index.php?pagename=parent-page/sub-page’.

Ver Referencia de función/obtener página por ruta

Ejemplo:

// Assume 'my_permalink' is a post.
// But all types are supported: post, page, attachment, custom post type, etc.
// See http://codex.wordpress.org/Post_Types
get_page_by_path('my_permalink', OBJECT, 'post');

  • Solo necesita definir el tipo de publicación (ver $post_type argumento: codex.wordpress.org/Post_Types)

    – mems

    28 de marzo de 2013 a las 0:19


  • Debería editar eso. Su respuesta es la mejor ahora que han agregado soporte para custom_post_types y publicaciones o al menos documentado … Esta es la solución que estoy usando yo mismo. Gracias.

    – jake

    29 de marzo de 2013 a las 17:09


  • Impresionante. con suerte ayudará a otros también.

    – jake

    30/03/2013 a las 21:40

avatar de usuario
deweydb

actualización 2022

url_to_postid( string $url )

Para referencia:
http://codex.wordpress.org/Function_Reference/url_to_postid

  • agregue más que un enlace debajo de la palabra “esto” para describir lo que hay detrás del enlace.

    – jnhghy – Alexandru Jantea

    11 de julio de 2015 a las 6:21

  • el enlace esta muerto

    – Adil Soomro

    16 de mayo a las 17:03

  • @AdilSoomro lo siento, respondí esto hace mucho tiempo, el enlace aún está activo en la máquina, actualizaré mi respuesta con más detalles. web.archive.org/web/20200729211606/http://betterwp.net/…

    – deweydb

    17 de mayo a las 19:14

avatar de usuario
jovaniwayne

url_to_postid() a partir de 3.7.0: Esta función ahora es compatible con tipos de publicaciones personalizadas (ver Trac tickets #19744, #25659).

Tengo un WP multisitio, así que una vez que reviso los blogs por algunas razones en algunos blogs url_to_postid() funciona, en otros blogs en la publicación del mismo tipo no mientras get_page_by_path() funciona como encanto. Así que lo hice de esta manera, aunque puede que no sea perfecto:

$parsed_url = wp_parse_url( $url ); // Parse URL
$slug = substr($parsed_url['path'], 1 ); // Trim slash in the beginning

$post_id = url_to_postid( $slug ); // Attempt to get post ID

if ( ! $post_id ) { // If it didn't work try to get it manually from DB
    $post_query_result = 
        $wpdb->get_row("SELECT ID FROM {$wpdb->prefix}posts WHERE post_name="{$slug}"");
    $analog_id = (int) $post_query_result->ID;
}

avatar de usuario
jovaniwayne

puedes probar este también:

$post = get_page_by_path('cat',OBJECT,'animal'); 

gato es el que buscas= el enlace permanente; animal es el tipo de publicación personalizada,

avatar de usuario
Sultán Allaudeen

por favor use

  $postid = url_to_postid( $url );

para recuperar el ID de un archivo adjunto.

Se requiere que la url proporcionada tenga el formato de example.com/?attachment_id=N y no funcionará con la URL completa para obtener la identificación de la URL completa.

¿Ha sido útil esta solución?