Get PHP and Shortcode to Work in WordPress Widgets

Getting PHP Working in Widgets

By default any PHP code won’t execute in WordPress widgets or sidebars, you can probably get by with a plugin but you can also add a function in your themes function.php file to allow PHP to run, what you need to declare is a custom function and filter.

//Allow PHP to run in Widgets
add_filter('widget_text','execute_php_widgets',10);

function execute_php_widgets($html){
   if(strpos($html,"<"."?php")!==false){
   ob_start();
   eval("?".">".$html);
   $html=ob_get_contents();
   ob_end_clean();
   }
return $html;
}

If you add the above in your theme or child theme – PHP is now enabled and will work in widget areas.

Getting ShortCode Working in Widgets

You also can’t get shortcode to work in widget areas by default, however a filter can be added to the functions.php file to make that work

// Use shortcodes in text widgets.
add_filter('widget_text', 'do_shortcode');

 

Getting ShortCode Working in PHP Templates

You can get shortcode working in WordPress php templates like so:

// Use shortcode in a native PHP file
<?php echo do_shortcode('http:myvideo.com'); ?>

If the code is to be inserted inbetween HTML make sure you keep the PHP opening and closing tags as above.