The proper way to include/require PHP files in WordPress

If you check https://codex.wordpress.org/Function_Reference/get_template_directory_uri You will see get_template_directory_uri() returns a uri, not a server path. You should use instead the get_template_directory() function: include get_template_directory() . ‘subdir/filename.php’; For a plugin you can use the plugin_dir_path() function: include plugin_dir_path( __FILE__ ) . ‘subdir/filename.php’;

Can I create my own “Recent Posts” widget or customize the existing one?

It’s usually best to copy the existing one, name it something unique, and then add your own functionality. Copy the WP_Widget_Recent_Posts class from wp-includes/class-wp-widget-recent-posts.php into your functions.php (or, preferably, another file in your theme devoted just to widgets) and rename to something else, like My_Widget_Recent_Posts Add your functionality in there. Don’t forget to call register_widget(‘My_Widget_Recent_Posts’) … Read more

wp_redirect() – headers already sent

Found the answer (via) Instead of using the function I added an action to “wp_loaded”, that makes sure that it gets loaded before any headers are sended. <?php add_action (‘wp_loaded’, ‘my_custom_redirect’); function my_custom_redirect() { if ( isset( $_POST[‘subscribe’] ) ) { $redirect=”http://example.com/redirect-example-url.html”; wp_redirect($redirect); exit; } } ?>