Ever wondered on how to change the excerpt length, add multiple sidebars or even add shortcodes in Widgets? No? This article will answer these questions because nowadays to be efficient, a web developer has to have a toolbox with code snippets he can use over and over again. WordPress has lots of hacks that you maybe unaware of. Just read this article and discover some nice snippets that can help you in your web-development.
In this article, we have compiled 11 new WordPress hacks that you should definitely add to your library.
Removing The Meta Generator Tag
The wp head() function adds a meta tag showing which version of WordPress you’re using. For security reasons this should be disable.
// Removing the meta generator tag remove_action('wp_head', 'wp_generator');
Changing excerpt lenght
In WordPress it is possible to change the excerpt length by simply returning the desired number of words as an integer. In this example we will output the first 50 words. We strongly recommend to create a variable an put it on top of your functions.php so you can quickly change it.
// Changing excerpt length to 50 Words $wp_excerpt_words_length = 50; function change_excerpt_length($length) { return $wp_excerpt_words_length; } add_filter('excerpt_length', 'change_excerpt_length');
Changing excerpt more
The default text appended to auto-generated excerpts is (‘[…]’). Sometimes it is more suitable to change it with something else for example a link. Here below is the code to change the excerpt more with a link.
// Changing excerpt more function change_excerpt_more($more) { return '' . 'Continue reading' . ''; } add_filter('excerpt_more', 'change_excerpt_more');
Integrate Custom Navigation Menus inside your WordPress Theme
Navigation menus are a one of the big new feature in version 3.0 of WordPress. If you want to support them in your new theme, or if you’re modifying an older theme for 3.0, you’ll need to add the code in Listing 6-33 to your theme files.
// Add support for menus add_theme_support( 'nav-menus' ); // put this in your theme template where you want to display it wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary' ) );
Add Support for Post Thumbnails (Featured Images)
Featured images were known as post thumbnails prior to version 3.0, to enable support for Features Images just add the following line to your functions.php file.
// Add support for thumbnails add_theme_support( 'post-thumbnails' );
Custom Backgrounds and Headers in your Theme
Enabling custom backgrounds for your theme is very easy. Just add the line below to your theme’s functions.php file.
// Add support for backgrounds add_custom_background();
Make Your Theme Widget Ready
In a modern WordPress Theme we could consider a widget ready sidebar as essential. For the end user the widgets allow to easily and quickly customize specific content on their WordPress theme. In order to do that we need to define each widget area you want in your theme. To do that you need to register an array telling WordPress which areas should be called and what code should be displayed before and after the widget block and title.
Look at the example below and add code to your functions.php file:
// Defining two widgets function my_widgets_init() { // Widget 1, specifying the position of the widget is always good! register_sidebar( array( 'name' => __( 'Primary Widget Area', 'twentyten' ), 'id' => 'primary-widget-area', 'description' => __( 'The primary widget area', 'twentyten' ), 'before_widget' => '
', 'after_title' => '
', ) ); // Widget 2, specifying the position of the widget is always good! register_sidebar( array( 'name' => __( 'Secondary Widget Area', 'twentyten' ), 'id' => 'secondary-widget-area', 'description' => __( 'The secondary widget area', 'twentyten' ), 'before_widget' => '', 'after_title' => '
', ) ); // A third Widget would be the same! Just change the 'id', 'name' and 'description' } // Register sidebars widgets by running my_widgets_init() on the widgets_init hook. add_action( 'widgets_init', 'my_widgets_init' );Now, all we need to do is add a conditional php statement in our sidebar (or wherever you want), like so:
if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('primary-widget-area') ) { // non widget and sidebar information go here } if ( is_active_sidebar( 'secondary-widget-area' ) ) { dynamic_sidebar( 'secondary-widget-area' ); }
Now the theme is widget ready, if there are no widgets enabled, the code you entered in the first if will be displayed. Note that you need to enter the name of your widget to display it.
How to use WordPress shortcode in theme files
Creating shortcodes in WordPress is to create a function that prints out what you want, and then defining it as a shortcode. In your php code just put this line to print the desired shortcode.
do_shortcode( $content )
For more information about shortcode: http://codex.wordpress.org/Shortcode_API
Use WordPress shortcodes in widgets
WordPress shortcodes are bracketed placeholders you can use while editing your content that will be replaced with some other content. Here are some example of what you can do with shortcodes: add content such as galleries, rss feeds, google maps etc…
// Enable shortcodes in widgets add filter('widget_text', 'shortcode_unautop'); add filter('widget_text'', 'do_shortcode');
Modifying Roles to allow subscribers to view private posts and pages
Somethimes you want to give some users more rights. In this example we want to allow any logged-in user to view our private posts and pages. In order to do that we need to grant them two additional capabilities listed here below.
// Allow subscribers to view private posts and pages $PrivateRole = get_role('subscriber'); $PrivateRole -> add_cap('read_private_pages'); $PrivateRole -> add_cap('read_private_posts');
Extending User Profiles
WordPress user profiles include several contact fields (e-mail address, a URL, AIM, Yahoo, and Google Talk) and these built-in contact fields are not always terribly useful. It is possible to extend or remove some fields with just a few lines of code in functions file. In the following code we will add a Twitter field and remove AIM, Yahoo IM, Google Talk/Jabber.
// Change user contact fields profile function change_user_profile( $contactmethods ) { // Add Twitter field $contactmethods['twitter'] = 'Twitter Name (no @)'; // Remove AIM, Yahoo IM, Google Talk/Jabber unset($contactmethods['aim']); unset($contactmethods['yim']); unset($contactmethods['jabber']); return $contactmethods; } add filter('user_contactmethods','change_user_profile',10,1);
Great article…. i like this
Thanks! Btw you got a nice website!
There’s a typo in the last example, for adding & removing user contact bits. On line 12, it reads:
add filter('user contactmethods',
and should read:
add filter('user_contactmethods',
You are right! Thanks I just corrected it.
Or, y’know, I’m a dummy, and it should really be:
add_filter('user_contactmethods',
great post thanks
great job bro, wordpress is the best
glad to meet this blog
byme. check my blog too