¿Por qué usar add_action para shortcodes?

13 mar 2013, 10:22:34
Vistas: 17.3K
Votos: 8

Me gustaría crear shortcodes, pero algunos tutoriales mencionan usar add_action:

add_action( 'init', 'registrar_shortcodes');

Pero leí otro tutorial donde el autor no lo usó, solo colocó esto en functions.php:

add_shortcode( 'posts-recientes', 'funcion_posts_recientes' );

¿Cuál es el mejor método y por qué usar add_action?

1
Comentarios

Envolver las llamadas a add_shortcode en una función y llamar a esa función con un hook te da más control sobre cuándo se agregan los shortcodes. Por ejemplo, es posible que desees agregar esos shortcodes cuando un plugin específico está activado, pero no en otros casos.

admcfajn admcfajn
20 feb 2019 08:26:07
Todas las respuestas a la pregunta 3
1

Si revisas la página del Codex sobre add_shortcode(), no verás nada sobre la necesidad de usar add_action() antes de poder utilizar add_shortcode().

Por lo tanto, puedes colocar tu add_shortcode() directamente en tu functions.php. Esto es lo que yo también hago.

Consulta este artículo - Guía completa de Shortcodes en WordPress sobre el uso de shortcodes y las mejores prácticas.

13 mar 2013 10:32:21
Comentarios

De hecho, has enlazado a un artículo que dice que deberías envolverlo en una acción.

raam86 raam86
1 sept 2013 16:39:47
0

A veces es necesario utilizar la acción 'init'. Por ejemplo, en este momento estoy editando un tema que se basa en gran medida en widgets y el panel de personalización. Intenté añadir un shortcode personalizado sin acciones y obtuve errores al guardar el contenido en el panel de Personalizar. La acción asegura el orden correcto de ejecución de las funciones. Básicamente dice "¡Oye shortcodes! Primero cargaré las funciones más importantes, ¡luego tú!"

16 mar 2017 10:43:45
1

Sin repetir demasiado lo que ya se ha cubierto en las respuestas anteriores; este es simplemente un enfoque de mejores prácticas. A menudo lo uso en el desarrollo de plugins donde necesito tener clases separadas como en la plantilla inicial de plugin wppb.me.

Tiene sentido registrar todos tus hooks de administración en el loader. En el caso del shortcode, puedes agregar el hook add_action para shortcodes en el método de carga de hooks:

 /**
   * Registrar todos los hooks relacionados con la funcionalidad del área de administración
   * del plugin
   */ 

     private function define_admin_hooks() {

     $plugin_admin = new instance( $this->get_plugin_name(), $this->get_version() );

     $this->loader->add_action( 'init', $plugin_admin, 'register_shortcodes');
}

El principal beneficio que obtengo con este enfoque es la facilidad de mantenimiento del código, ya que el código es modular. Puedes agregar varios otros hooks en el mismo método, lo que facilita el seguimiento y los cambios, especialmente para un plugin grande.

Por lo tanto, significa que en la clase donde quieres usar add_shortcode no tienes que ejecutar el action hook en el método constructor, ahora puedes usarlo en un método personalizado como:

public function register_shortcodes(){

        add_shortcode('recent-posts', array($this, 'recent_posts_function'));

    }
19 feb 2019 23:58:17
Comentarios

Me ahorraste tiempo. No estaba pasando el segundo argumento con una instancia de la clase y estuve depurando durante 2 horas. :|

Tan-007 Tan-007
20 sept 2019 03:59:31