Cuando se quiere usar una función de WordPress en un archivo que se encuentra fuera de lo que es el tema, aunque esté dentro de la instalación, WordPress obviamente no reconoce el elemento como tal, lo que provoca que se quede como un código PHP más ajeno a lo que es el sistema WordPress. Pues bien, para incluir la librería de WordPress en un archivo externo y que todas las funciones sean reconocidas, únicamente hay que introducir una ruta a wp-load.php,  que podemos casi decir que es la librería de entrada a todas las funciones que usa el sistema.

Aunque es importante recordar que este parche está más orientado a usos internos que para plugins como tal. Podéis ver las razones mucho mejor explicadas que lo que yo puedo decir aquí o aquí.

require( '../wp-load.php' );

Decir una cosa más, y es que podemos vernos con problemas estilo “Not found” y parecidos a causa de la ruta de wp-load.php. Para ello, simplemente hay que crear un archivo .php en blanco, introducir:

<?php echo $_SERVER['DOCUMENT_ROOT']; ?>

Así podemos ver la ruta completa del servidor, y ya a partir de ahí modificar wp-load.php en nuestro archivo que usará wp-load.php como require.

Los usos, casi para lo que queramos. Personalmente, el principal uso es para ajax de jQuery, para usarse como URL :D

Si usamos WordPress y además el sistema de paginación, veremos que según en qué página nos encontremos, la ruta (path) es modificada, añadiéndose el número de la página al final, de la siguiente forma:

http://dominio.com (Página simple)

http://dominio.com/page/2/ (Y así para todas las páginas sucesivas a la página 2)

Este sistema, con todas las ventajas que tiene para ayudar a organizar el contenido en WordPress y diferenciarlo de otras páginas, trae también sus desventajas. Es decir, al añadir el número de la página en la que nos encontramos al final, provoca que la ruta de acceso a contenidos que se encuentran dentro del tema de WordPress sean inaccesibles.

¿Por qué? WordPress no reconoce esta nueva ruta y nos devuelve el “no encontrado” cuando realmente existe. Pues bien, hay una solución para esto, a través de un condicional:

<?php if ( $paged < 2 ) { //Solo se mostrará cuando estemos en una página que no sea la principal ?>
<?php } else { // Solo se mostrará cuando estemos en la página  principal ?>
<?php } ?>

De esta forma, podemos modificar la ruta hacia nuestra hoja de estilos, imagen o librería directamente para que se muestre, con la ruta completa eso sí:

<?php if ( $paged < 2 ) { ?>
<a href="<?php bloginfo('template_url'); ?>/imageninterior.jpg">Imagen Interior</a>
<?php } else { ?>
<a href="<?php bloginfo('template_url'); ?>/imagenprincipal.jpg">Imagen Principal</a>
<?php } ?>