¿Cuál es la condición para verificar si estamos en el admin o en el frontend?

17 jul 2013, 21:12:42
Vistas: 20.7K
Votos: 11

¿Cuál es la condición para verificar si estamos en el admin o en el frontend?

Quiero usar add_action no en el backend, sino solamente en el frontend.

0
Todas las respuestas a la pregunta 3
6
19

Echa un vistazo a la is_admin() etiqueta condicional:

function wpse106895_dummy_func() {
    if ( ! is_admin() ) {
        // haz lo que necesites
    }
}
add_action( 'some-hook', 'wpse106895_dummy_func' );

is_admin() devuelve verdadero si la URL que se está accediendo está en el panel de administración / wp-admin. Por lo tanto, su negación (a través del operador NOT) es verdadera cuando se está en el frontend.

Actualización, ver comentarios a continuación:

function wpse106895_dummy_func() {
    // haz lo que necesites
}
if ( ! is_admin() ) add_action( 'some-hook', 'wpse106895_dummy_func' );

te ahorrará sobrecarga.

17 jul 2013 21:16:02
Comentarios

if ( is_admin() ) add_action(). No llenes el array de filtros con valores que nunca necesitarás.

fuxia fuxia
17 jul 2013 21:51:29

A menudo verificaba dentro del callback - después de todo, pensaba, las declaraciones nunca se interpretarán si no se cumple la condición. Nunca consideré la sobrecarga en el array de filtros. Nunca.

Johannes Pille Johannes Pille
17 jul 2013 21:56:33

! is_admin() devuelve verdadero también en wp-admin y wp-login.php, por lo que no es una verificación para el frontend

Benjamin Intal Benjamin Intal
1 ago 2015 11:17:28

Ten en cuenta que is_admin no verificará las llamadas cron y ajax. Así que si realmente necesitas solo el frontend, esto podría no ser suficiente.

janw janw
12 nov 2016 17:56:35

Para continuar con lo mencionado por @janw, una verificación verdadera del frontend se vería así ( ! is_admin() || wp_doing_ajax() ) && ! wp_doing_cron()

WPExplorer WPExplorer
5 may 2020 09:38:34

@WPExplorer - ¿cuál es el opuesto de tu 'verificación verdadera del frontend' - comprobar el 'back end', y no editar un comentario allí, o agregar una respuesta de comentario en la pantalla admin/comments?

Rick Hellewell Rick Hellewell
23 ene 2022 03:07:43
Mostrar los 1 comentarios restantes
0

El backend y el frontend en la web moderna son más un estado mental que un patrón de URL o código distinto. Si una página específica se considera backend o frontend puede cambiar según el tipo de usuario que acceda a ella.

En el contexto de WordPress, la pregunta podría reformularse como "Quiero agregar una acción cuando el tema está generando HTML" (lo cual podría o no cubrir toda la generación del frontend en tu caso específico), y para esto, el mejor hook a usar es template_redirect que se ejecuta justo antes de que WordPress decida qué plantilla del tema usar para generar el HTML.

25 may 2018 19:00:35
1

Desafortunadamente, la función is_admin() no funciona correctamente si necesitas verificar en Widget::widget() si el código se está ejecutando en el front-end o en la página de administración.

Debido a esto, existe un problema para distinguir entre la vista de lo que muestra el widget en el blog y lo que se muestra en la subpágina widget.php del panel de administración. En la página widgets.php del escritorio, la vista previa del widget es una salida de la etiqueta HTML <iframe>, por lo que is_admin() no es una buena solución en este caso.

Como no existe una función is_front_end() en WordPress, una solución interesante es crear una función que verifique si las funciones get_header() y get_footer() se han ejecutado durante la solicitud actual. Una función sencilla.

<?php 

    function is_front_end() {
        if ( did_action( 'get_header' ) || did_action( 'get_footer' ) ) 
            return true;
    }

?>

Inspiración gracias a la respuesta de @TheDeadMedic:

https://wordpress.stackexchange.com/a/228236/84343

16 nov 2023 09:59:48
Comentarios

No estoy seguro si esto funcionaría en todos los casos, si quieres hacer algo antes de que se muestre el encabezado, o en el propio encabezado, ¿esto no funcionaría?

DrLightman DrLightman
14 nov 2024 15:13:00