Ejecutar código php en un widget en WordPress sin plugins
En ocasiones es necesario ejecutar algún código php en un widget, ya sea para mostrar información diferente de acuerdo a la categoría donde se encuentre o simplemente porque se necesita. Hay muchos pluins que pueden realizar esto, pero si ya tienes muchos plugins instalados y no quieres abusar sobrecargando lo puedes hacer con estas pocas lineas de código. Solo copia y pega la siguiente funcion en el archivo functions.php de tu theme.
add_filter('widget_text','execute_php',100);
function execute_php($html){
if(strpos($html,"<"."?php")!==false){
ob_start();
eval("?".">".$html);
$html=ob_get_contents();
ob_end_clean();
}
return $html;
}
Autor
Escrito por Jose Aguilar - Director ejecutivo y tecnológico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.
Hola Jose, como estas?
Estoy en busqueda de algo de ayuda para obtener un snippet de una funcion presente en un plugin de el repositorio de wordpress, y en esa busqueda encontre este sitio maravilloso de codigos. Quiero preguntarte si me podrias ayudar con algo de codigo para esto? Te explico: El plugin es este https://wordpress.org/plugins/wp-referral-code/ y dentro de su estructura tiene un archivo llamado wp-referral-shortcodes.php en donde alli estan todos los shortcodes usados para simplificar la inclusion de los codigo en las paginas. ok? Dentro de este archivo se encuentra esta funcion llamada: WP_Referral_Upline_shortcode y aqui su codigo:
function WP_Referral_Upline_shortcode( $atts ){
if ( is_user_logged_in() ) {
$upwnlineid = get_user_meta(get_current_user_id(), ‘referral_id’, true);
$html = »;
if ($upwnlineid != ») {
$user_info = get_userdata($upwnlineid);
$html .= $user_info->first_name.’ ‘.$user_info->last_name;
} else {
}
return $html;
}
}
add_shortcode( ‘referral_upline’, ‘WP_Referral_Upline_shortcode’ );
Este codigo solo devuelve 1 Miembro Upline que es la persona que invito a otra a el sitio web. Mi pregunta y la ayuda que te estoy solicitando es ¿Como volver esta funcion RECURSIVA y que no solo me traiga a un solo Upline sino que sean n Uplines, es decir, el patrocinador que trae actualmente, pero a su ves a su patrocinador de patrocinador, y a a su vez el patrocinador del patrociandor de el patrocinador, etc etc,,, es una relacion digamos PADRE-HIJO, peropor ser alreves seria HIJO-PADRE-ABUELO-BISABUELO-TATARAABUELO- etc etc. dependiento de los n NIVELES de ascendencia genealogica.? y la funcion ya se haria reescribir con un shortcode diferente, es decir:
WP_Referral_Nupline_shortode : mire al diferencia en al n,
function WP_Referral_Upline_shortcode( $atts ){
if ( is_user_logged_in() ) {
$upwnlineid = get_user_meta(get_current_user_id(), ‘referral_id’, true);
$html = »;
if ($upwnlineid != ») {
$user_info = get_userdata($upwnlineid);
$html .= $user_info->first_name.’ ‘.$user_info->last_name;
} else {
}
return $html;
}
}
add_shortcode( ‘referral_upline’, ‘WP_Referral_nUpline_shortcode’ );
Quedo agradecido or su ayuda:
Hola,
No soy un experto en funciones recursivas pero si se que para tu caso, necesitas llamar a esa función dentro de si misma con un parámetro adicional para indicar que padre toca mostrar y al llamarla, es una función que se llamará a si misma hasta que se cumpla la condición de salida que también deberás controlar. Por ejemplo, si el padre que se está revisando no tiene hijos, return false. Esta condición deberás hacerla antes de llamar a la recursividad.
Saludos