Convertir u obtener las url de los post en modo amigable ??

  • Autor Autor Vzk91
  • Fecha de inicio Fecha de inicio
Vzk91

Vzk91

Zeta
Programador
Verificación en dos pasos activada
Hola,

Vereis yo tengo configurado para que las url de los post se muestren de la siguiente forma:

Insertar CODE, HTML o PHP:
http://www.misitio.com/la_categoria/la_entrada

El problema esque esta url "amigable" es generada posteriormente, ya que si consulto la tabla WP_POST el campo que almacena la url que es el campo "guid" almacena una url del tipo:

Insertar CODE, HTML o PHP:
http://www.misitio.com/?p=XX

Alguien sabe si es posible obtener apartir del guid del post la url amigable ??

OJO ! Estoy hablando de obtenerla en forma de variables, no directamente la url del navegador, ya que necesito estraer la URL por una consulta a la BD pero la que obtengo que las guid no me sirve...

un saludo

- - - Actualizado - - -

He estado investigando bastante y he logrado conseguir el objetivo que me proponia, pero la forma en la que lo he hecho es algo "sucia", y me gustaria saber si alguien podria ayudarme a depurar un poco el codigo. El codigo es el siguiente:

PHP:
//$id es el ID del post
//$nombre es el titulo del post
function obtener_url($id, $nombre)
{
foreach((get_the_category($id)) as $category){
$nombre2 = trim(preg_replace('(^A-Za-z0-9)', ' ', $nombre));
$chars = array("[", "]", "(", ")");
$chars_dobles = array("[(", ")]", "([", "])", ")[", "](", "(]", "[)", "[[", "]]", "((", "))", " [", " (");
$chars_esp = array("ñ", "Ñ");
//Sustituimos los caracteres dobles por un separador -
$nombre3 = str_replace($chars_dobles, '-', $nombre2);
//Eliminamos los caracteres que no nos interesan
$nombre4 = str_replace($chars, '', $nombre3);
//Remplazamos las ñ por n
$nombre5 = str_replace($chars_esp, 'n', $nombre4);
//Remplazamos los espacios por separadores - y convertirmos todo a minusculas
$nombre6 = strtolower(str_replace(' ','-',$nombre5));
//Generamos una ruta relativa del tipo /categoria/tuitulo
$ruta= "/".strtolower($category->cat_name)."/$nombre6/";
//Devolvemos la ruta
return $ruta;
}

//Llamamos la funcion pansandole los parametros
echo obtener_url(10, "Texto de Prueba [Prueba1](Prueba2)");

Finalmente el resultado es:

Antes: /?p=10

Ahora: /categoria/texto-de-prueba-prueba1-prueba2/


No se si me estoy complicando mucho la vida, pero llevo todo el dia buscando y no he encontrado otra forma de obtener la URL amigable de mis post en un string.

un saludo y si alguien puede ayudarme a optimizar este codigo se lo agradeceria

- - - Actualizado - - -

Definitivamente me estaba complicando mucho, os dejo una funcion que integra wordpress que hace la misma tarea:

PHP:
get_permalink($id_post)
 
Atrás
Arriba