Cómo obtener la url raíz de wordpress (abspath cambia en cada página)

1 minuto de lectura

avatar de usuario
CódigoVirtuoso

Tengo wordpress instalado en:

http://ejemplo.com/wordpress/

Cuando está en la página de inicio, la constante ABSPATH genera exactamente eso, pero cuando navega a otra página, como:

http://ejemplo.com/wordpress/contacto

el ABSPATH también se convierte en:

http://ejemplo.com/wordpress/contacto

La pregunta es, ¿cómo puedo obtener la raíz real (marcada en negrita) sin importar en qué página me encuentre, sin codificarla?

Estoy un poco confundido acerca de por qué ABSPATH cambia el valor, ¿no son las constantes inmutables una vez que se definen?

¡Gracias!

puedes usar Site_url();… 🙂

avatar de usuario
bittech

Tuve el mismo problema en una página de administración. No solo tiene que evitar la carpeta adicional que se inserta, WP puede instalarse en una carpeta.

Aquí hay una forma, aunque un tanto complicada y escrita para mayor claridad, que hace los ajustes para estos diversos elementos. evita DIRECTORY_SEPARATOR problemas también:

if (!defined(PLUGINUPDATEMGR_DOMAIN)) 
    define("PLUGINUPDATEMGR_DOMAIN", strtolower( $_SERVER['HTTP_HOST'] ) );

$wprootbase = strtolower( site_url() );

$wprootstart = strpos( $wprootbase, PLUGINUPDATEMGR_DOMAIN ) + 
    strlen( PLUGINUPDATEMGR_DOMAIN  ); // + 1 to strip the leading slash/backslash

$wprootend = strlen( $wprootbase );

$wproot = substr( $wprootbase, $wprootstart, $wprootend );

echo "Local WP path="" . $wproot . ""';

Agitado, no revuelto, salida:

Local WP path="/wp/wordpress-3.4.2" 

Por supuesto, YMMV =;?)

ABSPATH devuelve la ruta absoluta al archivo php en el servidor, como /var/www/wordpress/, verifique su instalación de wordpress.

La respuesta a su problema es usar:

Sitio URL()

o

bloginfo()

Como las personas antes mencionadas.

También podrías usar

$var = get_bloginfo(“wpurl’);

Para obtener el valor en una variable

La respuesta correcta es

<?php echo esc_url( home_url( "https://stackoverflow.com/" ) ); ?>

Aquí hay algo de texto porque debo tener al menos 30 caracteres.

¿Ha sido útil esta solución?