Me he dado cuenta de que algunos complementos como Contact-form-7 , Nextgen-gallery , posiblemente otros, tienen una característica interesante de no registrar sus códigos cortos cuando is_admin()
es cierto.
Lo problemático es que, si desea generar algún contenido dinámico (que puede tener código corto) a partir de ajax, y usar la forma wp "correcta" de hacerlo, admin-ajax.php, es imposible que WP_ADMIN sea verdadero. Vea las primeras líneas de admin-ajax.php:
define( 'DOING_AJAX', true );
if ( ! defined( 'WP_ADMIN' ) ) {
define( 'WP_ADMIN', true );
}
Ahora, parece que hay extensiones de PHP que le permitirán desarmar una constante definida (hacky), o puede haber una manera de meterse con el sistema WP_Screen indocumentado y $GLOBALS['current_screen']
hacer que la is_admin()
función devuelva falso. La solución más útil parece estar publicando en la página o en la raíz del sitio.
¿Es común que los complementos registren sus códigos cortos cuando is_admin()
es falso? Si es así, no podría encontrar ninguna documentación o razón para ello, aparte de que puede ser una optimización prematura.
is_admin
está haciendo_it_wrong, hay formas mucho mejores en WP de verificar las solicitudes de ajax. Finalmente, si el complemento pone en cola js / css, si lo hace bien (mediante la'wp_enqueue_scripts'
acción) no afectará a las páginas de administración porque ese enlace no se activa en las páginas de administración.the_content
llamadas y las llamadas admin-ajax.En realidad, no hay razón para no registrar códigos cortos en admin.
Si el autor de complementos desea deshabilitar el formulario de complementos Ajax, deberían hacerlo
en lugar de buscar es admin.
Tenga en cuenta que en el futuro, es posible que Shortcake se incruste en el núcleo porque es un "Complemento de funciones".
Si sucede, el shortcode no definido en el administrador no funcionará con él. Esto le da otra confirmación de que no hay razón para no registrar códigos cortos en el administrador: incluso los desarrolladores principales están trabajando en cosas que requieren códigos cortos disponibles en el administrador.
Dicho esto, tienes posibilidades:
Con respecto al n. ° 2, en realidad existen bibliotecas que pueden forzar
is_admin
a ser verdad. Por hackes, y nunca los usaría en producción.Un ejemplo es Patchwork .
Al usarlo, puede anular cualquier función personalizada de PHP.
En un complemento MU puedes hacer (completamente NO PROBADO):
Esto hará que
is_admin()
return sea falso en las solicitudes ajax.Sin embargo, como se dijo, esto es bastante hostil y afectará el comportamiento de otros complementos (y núcleos) con efectos impredecibles.
Otra cosa que puede hacer es registrar el controlador de shortcode del complemento en las solicitudes de administración.
Por ejemplo, si el código del complemento es:
entonces puedes escribir otro plugin que haga:
De esta manera, se agregará el shortcode en ambos casos.
Esto puede o no funcionar solo dependiendo de otro código de complemento, pero no hay una respuesta general a esto.
fuente
add_shortcode('shortcode', array('their-class', 'their-function') )
o similar.