2012-08-27 9 views
5

Estoy intentando crear una característica en mi tema que se base en hacer cosas antes de que se envíen los encabezados. Así que, naturalmente, me he enganchado en el gancho de inicialización de este modo:¿Primera versión del front-end de Init hook?

add_action('init', 'my_function'); 

pero el problema es que sólo quiero mi_funcion a ejecutar si el usuario no está mirando a la sección de administración o en la página de inicio de sesión.

Entonces, ¿qué gancho puedo usar que es front-end solamente pero se ejecuta antes de que se envíen los encabezados? Looking at the API reference, no parece haber ninguno, y obviamente los condicionales no funcionan tan temprano en el tiempo de ejecución.

Así que, aparte de buscar la URL para/wp-admin/y/wp-login/(que me parece torpe) no puedo entenderlo.

Respuesta

2

Así es como lo hago. El uso del gancho de acción wp es lo suficientemente tarde para proporcionar acceso a la consulta y, por lo tanto, a los condicionales, pero aún ocurre antes de que se configure la plantilla.

<?php 
function my_function() { 
    if (! is_admin() && ! is_login_page()) { 
     // Enqueue scripts, do theme magic, etc. 
    } 
} 

add_action('wp', 'my_function'); 

function is_login_page() { 
    return in_array($GLOBALS['pagenow'], array('wp-login.php', 'wp-register.php')); 
} 

Editar: no he entendido lo que quería decir con cabeceras (que estaba pensando en wp_head ... demasiado el tema de codificación últimamente!). Ahora estoy asumiendo que usted está tratando de vencer la acción send_headers:

function my_function() { 
    if ('index.php' == $GLOBALS['pagenow']) { 
     // Pre-header processing on the front-end 
    } 
} 

add_action('wp_loaded', 'my_function'); 

No es super elegante, pero al menos es concisa. Y it seems likely it will continue to work, que siempre son buenas noticias.

+0

WP se invoca después de que se envían los encabezados, por lo que no funcionará para lo que estoy tratando de hacer. –

6

concluir ganchos y la función de su acción en un if(!is_admin()){}

así:

if(!is_admin()) { 
    //Style 
    add_action('init', 'style'); 

    function style() 
    { 
     wp_enqueue_style('style', THEMEROOT . '/css/your.css'); 
    } 
} 
1

aquí es un poco de solución fino y fresco, espero que todo va a gustar.

function my_func(){ 
if (!is_admin()) 
{ 

// add code here for show only in front-end or create another function outside this block and call that function here. 
} 
else 
{ 
// add code here for show only in admin or create another function outside this block and call that function here. 
}}add_action ('init', 'my_func'); 

eso es todo, use y vea la magia.