Acciones y filtros
El mi humilde opinión la mejor manera es utilizar una acción para llevar las funciones de plug-in en los temas.
Ejemplo 1
Aquí hay un pequeño complemento para probar esto.
<?php
/** Plugin Name: (#68117) Print Hello! */
function wpse68117_print_hello()
{
echo "Hello World!";
}
add_action( 'wpse68117_say', 'wpse68117_print_hello' );
Dentro del tema:
<?php
/** Template Name: Test »Print Hello!« Plugin */
get_header();
// Now we call the plugins hook
do_action( 'wpse68117_say' );
Que pasa ahora / El niño kool
De esta manera no tenemos que verificar la existencia de una función, un archivo, una clase, un método o incluso un (¡no hagas esto!) Global $variable
. El interno de WP global ya toma esto por nosotros: comprueba si el nombre del gancho es el filtro actual y lo adjunta. Si no existe, no pasa nada.
Ejemplo # 2
Con nuestro próximo complemento, adjuntamos una función de devolución de llamada que toma un argumento.
<?php
/** Plugin Name: (#68117) Print Thing! */
function wpse68117_print_thing_cb( $thing )
{
return "Hello {$thing}!";
}
add_filter( 'wpse68117_say_thing', 'wpse68117_print_thing_cb' );
Dentro del tema:
<?php
/** Template Name: Test »Print Thing!« Plugin */
get_header();
// Now we call the plugins hook
echo apply_filter( 'wpse68117_say_thing', 'World' );
Esta vez, ofrecemos al usuario / desarrollador la posibilidad de agregar un argumento. Puede echo/print
generar la salida o incluso procesarla más (en caso de que obtenga una matriz a cambio).
Ejemplo # 3
Con el tercer complemento, adjuntamos una función de devolución de llamada que toma dos argumentos.
<?php
/** Plugin Name: (#68117) Print Alot! */
function wpse68117_alot_cb( $thing, $belongs = 'is mine' )
{
return "Hello! The {$thing} {$belongs}";
}
add_filter( 'wpse68117_grab_it', 'wpse68117_alot_cb' );
Dentro del tema:
<?php
/** Template Name: Test »Print Alot!« Plugin */
get_header();
// Now we call the plugins hook
$string_arr = implode(
" "
,apply_filter( 'wpse68117_grab_it', 'World', 'is yours' )
);
foreach ( $string_arr as $part )
{
// Highlight the $thing
if ( strstr( 'World', $part )
{
echo "<mark>{$part} </mark>";
continue;
}
echo "{$part} ";
}
Este complemento ahora nos permite insertar dos argumentos. Podemos guardarlo en un $variable
proceso adicional.
Conclusión
Con el uso de filtros y acciones, está proporcionando un mejor rendimiento al evitar verificaciones innecesarias (compare la velocidad function_*/class_*/method_*/file_exists
o la búsqueda de un in_array()
filtro global con ~ 1k (?) Búsquedas). También evita tener todos esos avisos innecesarios para no establecer variables, etc., ya que el complemento se preocupa por esto.