Mostrar el enlace permanente (permalink) sin http y www en WordPress
Tengo esta línea …
<div class="permalink"><?php the_permalink(); ?></div>
y el resultado en mi página se ve así …
http://misitio.com/cualquier/cosa-o-post
Supongo que también podría verse así …
http://www.misitio.com/cualquier/cosa-o-post
Sin embargo, me gustaría tener solo misitio.com/cualquier/cosa-o-post sin el http:// o www al principio.
No me malinterpreten, esto no tiene nada que ver con reescribir enlaces permanentes o algo por el estilo. Solo es un simple echo de the_permalink() en mi página que no se maneja como enlace sino como texto normal. Y en este caso me gustaría eliminar el http o www.
Como sugirió @milo, puedes manipular el retorno de get_permalink(). Esto se puede hacer fácilmente mediante varias funciones de cadena de php, aquí se usa str_replace(). Si necesitas eliminar tanto http:// como https://, proporciona un array de agujas a str_replace().
$permalink = get_permalink();
$find = array( 'http://', 'https://' );
$replace = '';
$output = str_replace( $find, $replace, $permalink );
echo '<p>' . $output . '</p>';
El código anterior no se encarga de la parte www(.), pero el principio debería quedar claro.
Otra posibilidad para la manipulación son las funciones PCRE (Expresiones Regulares Compatibles con Perl) de php, aquí se usa preg_replace().
$permalink = get_permalink();
$find_h = '#^http(s)?://#';
$find_w = '/^www\./';
$replace = '';
$output = preg_replace( $find_h, $replace, $permalink );
$output = preg_replace( $find_w, $replace, $output );
echo '<p>' . $output . '</p>';
usa get_permalink en lugar de the_permalink y manipúlalo como prefieras mediante php.