¿Cuál es la diferencia entre get_home_path()
y ABSPATH
?
¿No es el punto de ambos apuntar a la raíz de instalación de WordPress?
¿Cuál es la diferencia entre get_home_path()
y ABSPATH
?
¿No es el punto de ambos apuntar a la raíz de instalación de WordPress?
Ellos deberían hacer lo mismo, pero bajo ciertas condiciones, pueden no hacerlo.
Primera nota de todos:
wp-admin/includes/file.php
debe incluirse en el contexto de lo contrario, llamar a get_home_path()
llevará a llamar a una función no definida. Con respecto a la entrada del códice,
Descripción
Obtenga la ruta absoluta del sistema de archivos a la raíz de la instalación de WordPress.
Valor de retorno
Ruta completa del sistema de archivos a la raíz de la instalación de WordPress. Si instala wordpress en la subcarpeta, mostrará la ubicación de la subcarpeta
Ejemplos
$path = get_home_path(); print "Path: ".$path; // Return "Path: /var/www/htdocs/" or "Path: /var/www/htdocs/wordpress/" if it is subfolder
Indica que el valor de retorno devolverá la ruta de la subcarpeta si ha instalado WordPress en un subdirectorio. De hecho, esto es incorrecto.
get_home_path()
devolverá el directorio raíz de su instalación de WordPress, incluso si está instalado en un subdirectorio. Ese es el propósito de la función.
Suponga que su instalación de WordPress está dentro de un subdirectorio llamado /dev
,
Si registra una llamada a ABSPATH
, el resultado será /var/www/htdocs/dev
, que es no la raíz de su instalación. La raíz de su instalación es /var/www/htdocs
.
ABSPATH
se define por primera vez en wp-load.php
, que se ubicará en /var/www/htdocs/dev/wp-load.php
, por lo que aquí es donde ABSPATH
tomará su definición.
Si inspecciona get_home_path()
, observará que si difieren site_url
y home_url
, luego se toma una subcadena de la ruta gobernada por la posición (primera vez) del subdirectorio encontrado dentro de la cadena.
function get_home_path() {
$home = set_url_scheme( get_option( 'home' ), 'http' );
$siteurl = set_url_scheme( get_option( 'siteurl' ), 'http' );
if ( ! empty( $home ) && 0 !== strcasecmp( $home, $siteurl ) ) {
$wp_path_rel_to_home = str_ireplace( $home, '', $siteurl ); /* $siteurl - $home */
$pos = strripos( str_replace( '\', '/', $_SERVER['SCRIPT_FILENAME'] ), trailingslashit( $wp_path_rel_to_home ) );
$home_path = substr( $_SERVER['SCRIPT_FILENAME'], 0, $pos );
$home_path = trailingslashit( $home_path );
} else {
$home_path = ABSPATH;
}
return str_replace( '\', '/', $home_path );
}
Por lo tanto, como resultado de esto, get_home_path()
y ABSPATH
pueden devolver resultados diferentes si tiene WordPress instalado en un subdirectorio.
En segundo lugar, llamar a get_home_path()
se debe hacer en un contexto en el que afortmentioned wp-admin/includes/file.php
ya se ha incluido.
Como ejemplo, utilizar get_home_path()
dentro del admin_init
hook está bien, ya que usarlo dentro de init
no es.
Al ver que este archivo solo se incluye desde el contexto de administración (panel de control), si es absolutamente necesario que esté fuera de este contexto, deberá incluir el archivo usted mismo antes de llamar a la función,
require_once(ABSPATH . 'wp-admin/includes/file.php');
Irónicamente (o no) que usa ABSPATH
: D
Estoy usando home_url () para enlazar a la página "Inicio" de WP. A veces, site_url () puede no ser realmente su home_url () . Puede definir una página específica como página de inicio en Wordpress.