WordPress tip: Add a custom message to the editing pane

October 17, 2013 at 4:18 pm

When creating a WordPress site for a non tech-savvy user, it can be very useful to be able to display a custom message on the post editor page. Here’s a very simple hook to do it.

Copy the following snippet and edit the message on line 5. Once done, paste it on your functions.php file and save.

function wptutsplus_text_after_title( $post_type ) { ?>
    <div class="after-title-help postbox">
        <h3>Using this screen</h3>
        <div class="inside">
            <p>Use this screen to add new articles or edit existing ones. Make sure you click 'Publish' to publish a new article once you've added it, or 'Update' to save any changes.</p>
        </div><!-- .inside -->
    </div><!-- .postbox -->
<?php }
add_action( 'edit_form_after_title', 'wptutsplus_text_after_title' );

Thanks to WP Tuts for this great tip!

How to order posts by two meta values

October 15, 2013 at 4:20 pm

By default, WordPress allows you to sort results of a query by one meta value, but what if you need to sort results by two meta values (For example date and time)? Here ‘s a working example.

Paste the code below in your template file where you need to sort the results of the query.


$query = "SELECT wposts.*, wpostmeta1.*, wpostmeta2.* 
FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta1, $wpdb->postmeta wpostmeta2
WHERE wposts.ID = wpostmeta1.post_id
AND wposts.ID = wpostmeta2.post_id
AND wpostmeta1.meta_key = 'date'
AND wpostmeta2.meta_key = 'time'
ORDER BY wpostmeta1.meta_value ASC,
         wpostmeta2.meta_value ASC";

$results = $wpdb->get_results($query);

foreach ( $results as $result ) {
         //output results as desired
} ?>

Please note that this query is given as an example and might need to be adapted to fit your specific needs. If you need help at a cheap rate, contact WPCAT.

WordPress hack: Redirect to a custom page after registration

October 9, 2013 at 4:33 pm

Here is a very handy code snippet to redirect the user to a custom page after registration on your WordPress blog or website. Super useful for those using WP as a CMS!

Simply drop this snippet in your functions.php or a plugin.

function __my_registration_redirect(){
    return home_url( '/my-page' );
add_filter( 'registration_redirect', '__my_registration_redirect' );

Thanks TheDeadMedic for the tip!

WordPress tip: How to get the first link in post

October 7, 2013 at 3:41 pm

Remember when I shown you how to get the first image from a post? Today, I’m going to let you know how you can easily grab the first link from the post content.

Put the function below in your functions.php file, then use it inside the loop in your template files.

function get_link_url() {
    $content = get_the_content();
    $has_url = get_url_in_content( $content );

    return ( $has_url ) ? $has_url : apply_filters( 'the_permalink', get_permalink() );

Thanks to Filip Stefansson for the tip!

By the way, I just created a new service called WPCAT, where I offer my help to fix or enhance your WordPress site for a cheap rate. Don’t wait and contact me right now if you need any help with WordPress!

How to change author url base on your WordPress site

October 2, 2013 at 4:23 pm

In WordPress, author profile are by default accessible using the url yoursite.com/author/name. But what if you want to use the term “profile” instead of “author” in the url? Here is a handy recipe to do so.

Pasting the following code on your functions.php file will change the default yoursite.com/author/name to yoursite.com/profile/name.
Replace profile on line 4 by any slug you want.

add_action('init', 'cng_author_base');
function cng_author_base() {
    global $wp_rewrite;
    $author_slug = 'profile'; // change slug name
    $wp_rewrite->author_base = $author_slug;

Thanks to Kevin Chard for the cool tip!

WordPress tip: author bio excerpt

September 26, 2013 at 7:07 pm

Would you like to be able to show a short intro of the author bio instead of his complete bio? Here’s a code snippet to make an excerpt of the bio, with a link to the author page, where you can show the full bio.

Let’s start by creating the function. The code below have to be pasted into your functions.php file.

	function author_excerpt (){	                     					
		$word_limit = 20; // Limit the number of words
		$more_txt = 'read more about:'; // The read more text
		$txt_end = '...'; // Display text end 
		$authorName = get_the_author();
		$authorUrl = get_author_posts_url( get_the_author_meta('ID'));
		$authorDescriptionShort = wp_trim_words(strip_tags(get_the_author_meta('description')), $word_limit, $txt_end.'<br /> '.$more_txt.' <a href="'.$authorUrl.'">'.$authorName.'</a>');
		return $authorDescriptionShort; 		

Once done, you can use the function. To do so, use the code below where you’d like to display an author bio excerpt:

<?php  if (function_exists('author_excerpt')){echo author_excerpt();} ?>

Thanks to Tim Marcher for submitting this recipe!

How to paginate WordPress like Dribbble

September 24, 2013 at 5:46 pm

Are you using Dribbble? If you checkout a user on Dribbble there are two shots or thumbnails listed on the right hand side that will paginate the previous or next shot uploaded by the user. Here is a recipe to replicate this functionality on your WordPress site.

Just paste the code below on your single.php file, where you want to display the dribbble-like pagination:

<?php $prev = get_previous_post(); $next = get_next_post();
	<div class="float--left folio">
		<a href="<?php echo get_permalink($prev->ID); ?>" title="<?php echo esc_attr($prev->post_title); ?>">
			<?php echo get_the_post_thumbnail($prev->ID, 'thumbnail'); ?>
	<div class="float--right folio">
		<a href="<?php echo get_permalink($next->ID); ?>" title="<?php echo esc_attr($next->post_title); ?>">
			<?php echo get_the_post_thumbnail($next->ID, 'thumbnail'); ?>

This recipe has been submitted by Elliott Richmond. Thanks!

Remove “Plugins” and “Other News” widgets from WordPress dashboard

September 17, 2013 at 5:02 pm

If for some reason you don’t like to see the “plugins” and “other news” dashboard widget, here’s a way to remove them using some easy WordPress hooks.

Simply paste the code below in your functions.php file. Once you saved the changes, the “plugins” and “other news” widgets will not be shown again.

//Remove unwanted widgets from Dashboard
function remove_dashboard_widgets() {
add_action('wp_dashboard_setup', 'remove_dashboard_widgets');

Thanks to WP Guru for the code!

WordPress hack: Efficient SEO without a plugin

September 11, 2013 at 4:47 pm

Sure, there’s lots of great WordPress plugins to help you with SEO. But in case you don’t want to use a plugin, here’s a super efficient code make your blog SEO friendly.

Let’s start by pasting the code below into your functions.php file:

function basic_wp_seo() {
	global $page, $paged, $post;
	$default_keywords = 'wordpress, plugins, themes, design, dev, development, security, htaccess, apache, php, sql, html, css, jquery, javascript, tutorials'; // customize
	$output = '';

	// description
	$seo_desc = get_post_meta($post->ID, 'mm_seo_desc', true);
	$description = get_bloginfo('description', 'display');
	$pagedata = get_post($post->ID);
	if (is_singular()) {
		if (!empty($seo_desc)) {
			$content = $seo_desc;
		} else if (!empty($pagedata)) {
			$content = apply_filters('the_excerpt_rss', $pagedata->post_content);
			$content = substr(trim(strip_tags($content)), 0, 155);
			$content = preg_replace('#\n#', ' ', $content);
			$content = preg_replace('#\s{2,}#', ' ', $content);
			$content = trim($content);
	} else {
		$content = $description;	
	$output .= '<meta name="description" content="' . esc_attr($content) . '">' . "\n";

	// keywords
	$keys = get_post_meta($post->ID, 'mm_seo_keywords', true);
	$cats = get_the_category();
	$tags = get_the_tags();
	if (empty($keys)) {
		if (!empty($cats)) foreach($cats as $cat) $keys .= $cat->name . ', ';
		if (!empty($tags)) foreach($tags as $tag) $keys .= $tag->name . ', ';
		$keys .= $default_keywords;
	$output .= "\t\t" . '<meta name="keywords" content="' . esc_attr($keys) . '">' . "\n";

	// robots
	if (is_category() || is_tag()) {
		$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
		if ($paged > 1) {
			$output .=  "\t\t" . '<meta name="robots" content="noindex,follow">' . "\n";
		} else {
			$output .=  "\t\t" . '<meta name="robots" content="index,follow">' . "\n";
	} else if (is_home() || is_singular()) {
		$output .=  "\t\t" . '<meta name="robots" content="index,follow">' . "\n";
	} else {
		$output .= "\t\t" . '<meta name="robots" content="noindex,follow">' . "\n";

	// title
	$title_custom = get_post_meta($post->ID, 'mm_seo_title', true);
	$url = ltrim(esc_url($_SERVER['REQUEST_URI']), '/');
	$name = get_bloginfo('name', 'display');
	$title = trim(wp_title('', false));
	$cat = single_cat_title('', false);
	$tag = single_tag_title('', false);
	$search = get_search_query();

	if (!empty($title_custom)) $title = $title_custom;
	if ($paged >= 2 || $page >= 2) $page_number = ' | ' . sprintf('Page %s', max($paged, $page));
	else $page_number = '';

	if (is_home() || is_front_page()) $seo_title = $name . ' | ' . $description;
	elseif (is_singular())            $seo_title = $title . ' | ' . $name;
	elseif (is_tag())                 $seo_title = 'Tag Archive: ' . $tag . ' | ' . $name;
	elseif (is_category())            $seo_title = 'Category Archive: ' . $cat . ' | ' . $name;
	elseif (is_archive())             $seo_title = 'Archive: ' . $title . ' | ' . $name;
	elseif (is_search())              $seo_title = 'Search: ' . $search . ' | ' . $name;
	elseif (is_404())                 $seo_title = '404 - Not Found: ' . $url . ' | ' . $name;
	else                              $seo_title = $name . ' | ' . $description;

	$output .= "\t\t" . '<title>' . esc_attr($seo_title . $page_number) . '</title>' . "\n";

	return $output;

Once done, replace the $default_keywords (line 3) with your own and add the following code into your header.php file:

<?php echo basic_wp_seo(); ?>

Then, don’t forget to check the source of your pages and fine tune the code if needed.

Big thanks to Jeff Starr for this amazing code!

How to automatically add Gravatars for the post author

September 9, 2013 at 6:38 pm

Would you like to be able to automatically add the author gravatar to each post? It is really easy to do with this handy recipe.

Simply paste the following code where you’d like the author Gravatar to be displayed. Please note that this code must be used within the loop.

<?php echo get_avatar( get_the_author_email(), '80' ); ?>

Thanks to Emoticode for the tip!