WordPress - Latest posts by categoryOne technique that is most common with WordPress magazine or news style themes is the display of an archive of the latest posts by category, as simple titles or with post excerpts. This is useful for the previously mentioned theme styles, but not only. It can be used to set up custom blog homepages, 404 pages, landing pages or even a special archive page.
This tutorial will help you build a ‘Latest Posts by Category Archive‘ in a very easy way. The widths in the CSS styling presented below have been calculated based on the default WordPress theme, assuming that is the most common theme available to anyone.
If you are looking for a plugin to generate such an archive, please check out: WP Plugin: Latest Posts by Category Archive.

Setting up the page template

Open up you favorite code editor and create a blank document. Save the document as ‘category-archive.php’ (or any other name you’d prefer) in the default WordPress theme directory (wp-content/themes/default).
The first step is to asign our new template a name and a page-like structure, so based on the default theme’s page template, the code you should paste in your new document is:
01.<?php
02./*
03.Template Name: Category Archive
04.*/
05.?>
06. 
07.<?php get_header(); ?>
08. 
09.<div id="content" class="narrowcolumn">
10. 
11.    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
12.    <div class="post" id="post-<?php the_ID(); ?>">
13.    <h2><?php the_title(); ?></h2>
14.        <div class="entry">
15.            <?php the_content('<p class="serif">Read the rest of this page &raquo;</p>'); ?>
16. 
17.            <?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>
18. 
19.        </div>
20.    </div>
21.    <?php endwhile; endif; ?>
22. 
23.    <!-- Category Archive Start -->
24.    <!-- Category Archive End -->
25. 
26.</div>
27. 
28.<?php get_sidebar(); ?>
29. 
30.<?php get_footer(); ?>
The template above will make sure to display the page name you set up, and also, any additional content you might want to add before the archive, from you WordPress page editor. We will be adding our ‘latest posts by category’ code between the ‘Category Archive Start’ and ‘Category Archive End’ comments.

Adding the archive’s PHP code

Simply put, the code below will cycle through the first-level categories of your blog (parent categories), check for the ones that are not empty and if this condition is met, return an unordered list of the latest 5 post from each category. Empty categories will not be displayed.
01.<?php
02./*
03.Template Name: Category Archive
04.*/
05.?>
06. 
07.<?php get_header(); ?>
08. 
09.<div id="content" class="narrowcolumn">
10. 
11.    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
12.    <div class="post" id="post-<?php the_ID(); ?>">
13.    <h2><?php the_title(); ?></h2>
14.        <div class="entry">
15.            <?php the_content('<p class="serif">Read the rest of this page &raquo;</p>'); ?>
16. 
17.            <?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>
18. 
19.        </div>
20.    </div>
21.    <?php endwhile; endif; ?>
22. 
23.    <!-- Category Archive Start -->
24.    <ul class="catArchive">
25.    <?php
26.    $catQuery = $wpdb->get_results("SELECT * FROM $wpdb->terms AS wterms INNER JOIN $wpdb->term_taxonomy AS wtaxonomy ON ( wterms.term_id = wtaxonomy.term_id ) WHERE wtaxonomy.taxonomy = 'category' AND wtaxonomy.parent = 0 AND wtaxonomy.count > 0");
27. 
28.    $catCounter = 0;
29. 
30.    foreach ($catQuery as $category) {
31. 
32.        $catCounter++;
33. 
34.        $catStyle = '';
35.        if (is_int($catCounter / 2)) $catStyle = ' class="catAlt"';
36. 
37.        $catLink = get_category_link($category->term_id);
38. 
39.        echo '<li'.$catStyle.'><h3><a href="'.$catLink.'" title="'.$category->name.'">'.$category->name.'</a></h3>';
40.            echo '<ul>';
41. 
42.            query_posts('cat='.$category->term_id.'&showposts=5');?>
43. 
44.            <?php while (have_posts()) : the_post(); ?>
45.                <li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
46.            <?php endwhile; ?>
47. 
48.                <li><a href="<?php echo $catLink; ?>" title="<?php echo $category->name; ?>">More <strong><?php echo $category->name; ?></strong></a></li>
49.            </ul>
50.        </li>
51.        <?php }  ?>
52.    </ul>
53.    <!-- Category Archive End -->
54. 
55.</div>
56. 
57.<?php get_sidebar(); ?>
58. 
59.<?php get_footer(); ?>
You should now save your file, because we’re done editing it. As you can see, the archive code has been added between the ‘Start’ and ‘End’ comments. Now let’s go through the code and dissect it.

The PHP code explained

The first thing we do is to set up a database query to cycle through the non-empty parent categories:
1.$catQuery = $wpdb->get_results("SELECT * FROM $wpdb->terms AS wterms INNER JOIN $wpdb->term_taxonomy AS wtaxonomy ON ( wterms.term_id = wtaxonomy.term_id ) WHERE wtaxonomy.taxonomy = 'category' AND wtaxonomy.parent = 0 AND wtaxonomy.count > 0");
You can further tweak this query to exclude categories or specify categories to be listed based on their ID, with the use of the MySQL comparison functions NOT IN or IN.
Let’s say that you’d like the archive to exclude the categories with IDs 2, 5 and 6. Your query would become:
1.$catQuery = $wpdb->get_results("SELECT * FROM $wpdb->terms AS wterms INNER JOIN $wpdb->term_taxonomy AS wtaxonomy ON ( wterms.term_id = wtaxonomy.term_id ) WHERE wtaxonomy.taxonomy = 'category' AND wtaxonomy.parent = 0 AND wtaxonomy.count > 0 AND wterms.term_id NOT IN (2,5,6)");
Similarly, if you want to display only the categories with IDs 2,5 and 6, you’d have:
1.$catQuery = $wpdb->get_results("SELECT * FROM $wpdb->terms AS wterms INNER JOIN $wpdb->term_taxonomy AS wtaxonomy ON ( wterms.term_id = wtaxonomy.term_id ) WHERE wtaxonomy.taxonomy = 'category' AND wtaxonomy.parent = 0 AND wtaxonomy.count > 0 AND wterms.term_id IN (2,5,6)");
For further help with comparison operators and functions, you can check out the MySQL manual.
Next, we set up a category counter which will be incremented each time a category will be displayed. Based on this counter, the code adds a ‘catAlt‘ class that you can use to style differently consecutive categories. In our case, we’ll use it to shift the categories into two columns. This is were the alternate classes are assigned:
1.$catCounter++;
2. 
3.$catStyle = '';
4.if (is_int($catCounter / 2)) $catStyle = ' class="catAlt"';
The category list is built by the use of foreach and it helps retrieve vital information about the categories, such as name and permalink:
1.foreach ($catQuery as $category) {
2.    /* Code used to retrieve and display the latest posts */
3.}
After we display the category title and link through this line of code
1.echo '<li'.$catStyle.'><h3><a href="'.get_category_link($category->term_id).'" title="'.$category->name.'">'.$category->name.'</a></h3>';
we continue by using a custom query to retrieve the latest 5 posts from the current category in the cycle, followed by a link to the complete category archive:
1.query_posts('cat='.$category->term_id.'&showposts=5');?>
2. 
3.<?php while (have_posts()) : the_post(); ?>
4.    <li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
5.<?php endwhile; ?>
6.    <li><a href="<?php echo $catLink; ?>" title="<?php echo $category->name; ?>">More <strong><?php echo $category->name; ?></strong></a></li>
And that’s about everything in terms of coding! Now, onto the CSS styling.

Styling the archive

Find the style.css file in your default theme’s directory, open it and scroll down to the end of the file. Now copy the code below and paste it in your file.
01./* Latest posts by category styles */
02. 
03..catArchive {
04.    width: 450px;
05.    overflow: hidden;
06.    margin: 20px 0 0 0;
07.    padding: 0;
08.    list-style-type: none;
09.}
10. 
11..catArchive h3 {
12.    font: normal bold 18px sans-serif;
13.    border-bottom: 1px solid #666;
14.    margin: 0;
15.    padding: 0 0 3px 0;
16.    display: block;
17.}
18. 
19..catArchive li {
20.    display: block;
21.    float: left;
22.    width: 210px;
23.    margin: 0 30px 30px 0;
24.}
25. 
26..catArchive ul {
27.    margin: 0;
28.    padding: 0;
29.}
30. 
31..catArchive li li {
32.    border-bottom: 1px solid #ddd;
33.    margin: 0;
34.    padding: 4px 0;
35.}
36. 
37..catAlt {
38.    margin-right: 0 !important;
39.}
Now, save the file. We’re done!
Note: Keep in mind that column sizes have been calculated based on the available space (450 pixels) in the default theme’s content area. So, our columns should each be 210 pixels wide, with a 30 pixels spacing between them.
Since the column shifting is done with the help of float, I’ve set the overflow to hidden to stretch the list full height. This can only work with a fixed given container width, which in our case is 450px set on .catArchive.
If your new to “floating”, Sarah has posted a fairly easy to understand article about the float property on BloggingTips.com.
You can download an archive containing both source files: Download.
[More]
By now, you should know that I’m a WordPress fan. While most people regard it as a simple blogging platform, some see beyond that and realize that WordPress is a very capable CMS.
While working with it as a website CMS will not allow too many customizations for entry-level developers or users, in the hands of a pro WordPress is ready to perform miracles.

The advantages of WordPress powered websites

There are quite a bunch of advantages when developing websites using WordPress as CMS, but the most important are:
  • Productivity – A lot less time spent on development, which guarantees a lower cost and still high quality;
  • Ease of use – Both client-side and developer-side. The amount of tutorials, plugins and support groups available out there is a divine gift;
  • Updates – The WordPress community is very involved in keeping the project up to date and bug free and the updates are so easy to apply.
It’s enough to run a search on Google and you’ll see how many people praise the power of WordPress but instead of using words, this time I’ll use results.

The real deal

If in the past weeks you’ve seen less activity on Blogsessive is mostly because my design studio, QBKL Media has been working on delivering top notch quality for one of its clients that chose WordPress as the platform for their website redesign.
The client is one of Romania’s oldest post-revolutionary hotel – Caro Hotel – and today we’re pleased to announce the official launch of their website.
So, instead of going on and on about the power of WordPress, I invite you to see for yourself what can be achieved. And believe me that this is only a small part of the real deal!
[More]
Today I’ve received an email that made me think about this subject. Somebody asked me to confirm that a design agency that I’ve never heard of before, has done the design you see on Blogsessive. Obviously, I replied and told him that Blogsessive is a custom design done by yours truly, and any agency (with one exception) that would proud themselves with Blogsessive’s theme would be a fraud.
After hearing the price for which that agency was going to create something similar, the following thoughts started taking shape:
  • Why would you proud yourself with the work of someone else?
  • Why think these things would not surface?
  • Why roll out a low-ball quote for something that’s worth much more, or that you cannot deliver, but still state you can.
Before getting a custom design for you blog, here are some things you should consider.

Do you really need it?

You know my view on this one. I personally like having a unique looking blog, but than again, I’m a happy case. I can do my own designs.
Those who cannot have to relay on the skills of people like me and many others. In this case, there are some things you should base your decision on:
  1. Can your budget afford a custom design?
  2. Will this design generate profit? (Profit can be either traffic, awareness, money…)
If your answer is ‘yes’ to both questions, than you should go ahead with the design. If you answer with ‘yes’ to the first question only, then it’s only a matter of personal choice and willingness to invest in a hobby. The choice is obviously yours.

Looking for quotes

If you’ve decided to go ahead with the design, make sure you write down all the things you need. Otherwise, the quotes you’ll receive won’t reflect the reality.
Ask around for quotes on site like Elance, Get a Freelancer or Rent a Coder or simply contact the owners of the blog’s that you like and ask them to recommend you their designer.

Choosing the designer/agency

You’ll probably receive quite a bunch of quotes. Some will be very low, some will be too high. The ones that are too high will be pretty easy to identify, but the lower ones can be pretty attractive, considering the restrictive budgets these days.
The best advice I can give you is: Don’t be fooled!
From my whole experience I can guarantee you that there’s no such thing as a bargain when it comes to a job well done.
We all know that – for example – Darren Rowse’s blog, Problogger.net is an excellent design incorporating so many custom areas, like the Job Board, custom archives, best of zone and so on.
If Darren’s blog is such a hit, then you’d probably want something similar in terms of structure and accessibility (bare in mind the design is not everything and Darren is a great blogger, theme aside). Would you expect to get such a well done job for $300, or $400, or $500? Ask a real pro and the answer will be ‘no’. But then again, there are those people quoting these amounts, claiming they can get the job done.
The good: It fits your current budget.
The bad: Lack of professionalism in communication. Delays in delivery. Lack of attention to details. Bugs, and the list can go on and on.
Some of you would probably say I’m wrong, but consider this. A really well done premium theme sells for $49 to $99. Multiply this with the total sales and see the real price of that really well done design.

Fitting the project into your budget

Forget the bargain, start the negotiation. At this point you probably don’t even need all the features that Darren (Problogger.net), or Brian (Copyblogger.com), or I have on our blogs.
Does your traffic and exposure justify a job board? Do you really need so many custom page templates?
Instead of trying to fit everything into a tight budget and probably getting low-quality works, why not fit the custom concept along with the most important features into it. Negotiate.
Let’s say your budget is indeed $500, but a good agency will ask you for $800. Instead of picking the lowest quote, rather extend the deadline. Taking pressure off the agency could result in a lower quote.
Cut down on the features. Will also reduce costs.
I assure you that you blog will grow naturally even without that job board, and when the time is right and the blogging income will allow it, add that too. Take it step by step and don’t cut on the overall quality.
Rather put a smaller budget at work to get real results and build on that, than throwing your money out the window on something that will require constant fixing and attention and in the end, a whole lot of extra money to get done.
This is not the view of a designer. This is what I’ve concluded based on previous experiences, folks coming to me to fix work they previously had done as bargains. It’s not worth it.
[More]
Loving WordPress is SO easy! You got thousands of great looking blogs, custom themes, free themes, premium themes and designers go beyond that by using WordPress as CMS for their non-blog projects. A while back I showed you 10 non-blog websites powered by WordPress, and now it’s time to take a look at 10 more!

1. ProBar

1-ProBar-theprobar.com
Visit ProBar

2. Krispy Krush

2-Krispy-Krush­www.krispykrush.com
Visit Krispy Krush

3. The Salon

3-The-Salon-www.thesalonhair.com
Visit The Salon

4. Imaginaria Creative

4-Imaginaria-Creative-imaginariacreative.com
Visit Imaginaria Creative

5. Lyndsey Hamilton Events

5-Lyndsey-Hamilton-Events-www.lyndseyhamiltonevents.com
Visit Lyndsey Hamilton Events

6. IOKON Media

6-IOKON-Media-www.iokonmedia.com
Visit IOKON Media

7. Loja Birds

7-Loja-Birds-www.lojabirds.com.br
Visit Loja Birds

8. Bug Interactive

8-Bug-Interactive-www.buginteractive.com
Visit Bug Interactive

9. Ville de Falaise

9-Ville-de-Falaise-www.falaise.fr
Visit Ville de Falaise

10. Cow Says Moo

10-Cow-Says-Moo-cowsaysmoomedia.com
Visit Cow Says Moo
Yes! WordPress is fun. And easy!
[More]
The latest major release of our favorite blogging platform – WordPress 3.0 – has brought quite a few new features to the table. Among them, the custom navigation menus and the post thumbnails (featured image), the latter being available since version 2.9 came out. This started a whole new trend between theme developers, most of them rushing to announce WordPress 3.0 ready themes.
In all this rush, some of the themes released suffered from one big problem: backward compatibility. Why is that important and how can we give some backward compatibility to our WordPress 3.0 ready themes?

Importance of backward compatibility

While I feel that generally offering some sort of backward compatibility is just a common sense policy, in this case it’s more than that. Let me explain why.
Not everyone uses the latest WordPress release, and that is for various reasons:
  • Failed to update, or waiting to make sure it’s “stable”;
  • Doesn’t really get the importance of an up to date software;
  • Certain plugins they use are not yet 3.0/3.0.1 compatible.
This doesn’t mean they don’t want to try and use your beautiful 3.0 ready WordPress theme, or that they shouldn’t. But you see, the biggest trick resides right here, in this terminology: “3.0 ready”. The actual meaning of this is that the theme is compatible with the 3.0 version, not that it requires 3.0 or higher to function properly, and this leads a lot of people into a trap that will cause their blogs and websites to break.
So, the common sense thing to do would be to take the time and apply certain checks and fallback solutions to our themes. Lets see how we can do that.

Adding WordPress 3.0 features with fallback support

Both of the above mentioned features – custom menus and post thumbnails – are based on a WordPress function added once 2.9 was released: add theme support();

Adding post thumbnails support

In order to add post thumbnail support to your theme, you’d write this in your functions.php file:
1.// Adds support for post thumbnails
2.add_theme_support('post-thumbnails');
Simple adding this will cause any WordPress installation prior to 2.9 to break, as the add_theme_support() function was not part of the WordPress core back then. The fix? As easy as this:
1./* Checks if the installation has the function defined.
2.If true, continues to add the support for post thumbnails. */
3.if(function_exists(add_theme_support)) :
4.    add_theme_support('post-thumbnails');
5.endif;

Adding custom menus support

In order to also add support for the custom menus feature, you’d normally write this:
1.// Add theme support for custom menus
2.add_theme_support( 'menus' );
3. 
4.// Register a custom menu name/location
5.register_nav_menus(array(
6.    'custom-menu' => __( 'My Custom Menu' ),
7.));
In this case, we obviously need to check for core support of both functions: add_theme_support() and register_nav_menus(). Let see how we can do that, also including in this check the post thumbnails:
01.if(function_exists(add_theme_support)) {
02.    add_theme_support('post-thumbnails'); // Support for post thumbnails
03. 
04.    if(function_exists(add_theme_support)) {
05.        add_theme_support( 'menus' ); // Support for custom menus
06.        register_nav_menus(array(
07.            'custom-menu' => __( 'My Custom Menu' ),
08.        ));
09.    }
10.}
In case you wonder why I chose to add support for menus only after checking if register_nav_menus() is defined, it’s simply because there’s no point in adding support for a feature that you won’t be able to use. Remember, add_theme_support() was added in 2.9, while register_nav_menus() became available only in 3.0.
But how about adding compatibility in the front-end of your theme?
When using post thumbnails, never call them without checking if the function exists first:
1.// Performs a check to see if the function is available and there's also a thumbnail attached
2.if (function_exists(the_post_thumbnail) AND has_post_thumbnail()) {
3.    the_post_thumbnail();
4.}
For the custom menus, the thing is just a tad trickier, but simple as well. I’m usually using a function that I wrote to specifically check for custom menus support, and even though the wp_nav_menu() function provides a fallback solution, defaulted to wp_page_menu(), this fallback will only activate for 3.0 installations without any menus created and allocated to the reserved space. The fallback won’t set off if you’re using a version prior to 3.0.
Due to my preference of wp_list_pages() over wp_page_menu() – for more customization options – the following function will apply a compatibility fallback to wp_list_pages:
01.function my_nav_menu() {
02.    // Check if installation has wp_nav_menu() defined.
03.    // If true, generate the menu, but don't print it yet;
04.    if(function_exists(wp_nav_menu)) {
05.        $my_nav_menu = wp_nav_menu(array('menu' => 'Top Menu', 'container' => '', 'fallback_cb' => 'wp_list_pages', 'depth' => 2, 'echo' => false));
06.    }
07.    // If false, generate the menu using wp_list_pages, but don't print it yet;
08.    else {
09.        $my_nav_menu = '<ul class="menu">'.wp_list_pages('sort_column=menu_order&title_li=&echo=0&depth=2').'</ul>';
10.    }
11.    // Prints out the menu;
12.    echo $my_nav_menu;
13.}
Now, in the front end. instead of calling your menu with wp_nav_menu() you’ll now use my_nav_menu() to display a backward compatible version.

Conclusions

Caught in the rush of doing something nice and new, like a child discovering a shiny new toy, we can miss out some of the most basic problems. Most of them are really easy to solve, like the above mentioned and it would be common sense to make use of them.
And remember: if ( function_exists(function_name) ) is your geeky B.F.F.
[More]
It’s a known fact that the number and quality of backlinks a page/site gets will affect its search rankings. SEO copywriters have always struggled to write not only search engine friendly content, but also creative content that would make people want to link back. Others chose the easier, but more expensive, way of the “link marketplaces”, such as TLA.
In what follows I’m going to explain one easy enough method to boost your number of backlinks and also improve your blog’s Technorati rank. All with the help of Mixx.

Initial considerations

Those of you familiar with social media, social networking and bookmarking services have surely heard of Mixx and are most probably registered users. For those that are not familiar with this service, I strongly suggest you try it.
Not necessarily because of the traffic that it could provide – which is currently way below services like Digg, Reddit or Stumble Upon – but mainly because is one of the few services that are still not “infected” with trolls, down-voters and spammers. On Mixx you can still find content worth reading and bookmarking and also, Mixx is of great help when it comes to what I’m about to share with you.

How can Mixx boost your backlinks and Technorati rank?

The answer is simple. All bookmarks added to Mixx are “do follow” links. Sure, they are marked with rel=”bookmark”, but that does not negatively affect the link.
So, what could you do to get and make better use of those links?

1. Create a profile

And not just a profile, but rather start building a solid profile. Submit quality content, content that will attract votes. Considering that Mixx has been recently launched, compared to other such services, you can still build a power user profile.

2. You profile page

This page contains links to all stories you’ve submitted. On Mixx you are allowed to submit your own stories, but encouraged to use moderation and common sense. Again, all links are followed by search engines, the profile page is indexed and gets Page Rank. My profile page for example is currently a PR 3.

3. Power users/ Super Mixxers

It’s easier to get in touch and collaborate with power users on Mixx and just as your profile is indexed so is theirs, but only with more relevance and even higher Page Rank. After friendly helping them out, I’m sure that most of them wouldn’t mind submitting some stories for you.

4. Popular stories

And since Mixx is so “new”, you have quite a good chance of making the “popular stories” list. Success is guaranteed with a few supermixxers on your side. The “Popular” page is also indexed, links are followed and it currently has a PR 6. Get your story on the Mixx home page and you’ll get yourself a PR 7 link.
Popular and home page stories will instantly affect your Technorati rank too.

Final considerations

This article is only meant to help you better optimize your online presence and it’s not meant as an encouragement to spam Mixx. I can assure you that the Mixx masters are watching.
So, the best you can do to get in this win-win situation is:
  • Join Mixx
  • Submit quality and relevant content
  • Make Friends
  • Help out
  • Get help back
  • Boost your rankings
  • DO NOT spam!
[More]
One of the most basic, yet highly effective things you need to consider when doing blog optimization is using keywords to indicate search engine spiders what your posts are about. The more relevant to the page’s content, the better the search engine ranking.
Keyword optimization is part of on-page SEO, which means that it is a part of the optimization you’ll make on your blog’s code.
What you should know right from the start is that keywords can give your blog posts a boost in rankings or get your blog out of the first and most important search results. It all comes down to how well you’re using them and how relevant they are to your content.

Rules of keyword optimization

Since you’re reading this, I have no doubt that you understand how important well-researched keywords are and that you’re willing to make better use of them. These are some of the most important things you need to consider:
Things to do
  • Consider using keywords relevant to your article;
  • If the keywords are somehow related to each other, that’s a plus (for example: internet marketing, online marketing, search engine marketing);
  • Use different keywords for different blog posts. In most cases, search engines will return two results from you blog at most, so having five or six posts optimized for the same set of keywords would be a waste of content;
  • Write your article first, but with the right keywords in mind, not the other way around;
  • Use your most important keyword(s) in the title tag. If you’re using a SEO plugin, you can set a different page title than that of your blog post;
  • Use those keywords in the META description too;
  • Use the keywords in the title of your blog post and preferably in the first phrase or paragraph of your article;
  • Edit the post slug (permalink) so that it contains the most important keyword and also try to keep it as short as possible;
  • Place the keyword(s) a few more times (don’t overdo it) throughout the article in a humanly natural order and context;
  • If there are other older relevant posts on your blog, try to create backlinks from them using the selected keywords as anchor text (same goes for external incoming links).
Things to avoid
  • Don’t target too many keywords. Use as many keywords as you feel that are relevant to your content which means they are present on the page and have value to a visitor. A list of 50 keywords means that most probably at least 40 of them are almost totally irrelevant;
  • Don’t use irrelevant keywords. If your post is about NASA’s recent trip to Mars, I don’t know how Demi Moore or Vi*gra would fit in the picture;
  • Using text formatting on some keywords in your content is OK. Bolding everything out is not;
  • Avoid duplicating keywords in your META tags;
  • Placing a list of comma separated keywords in your title tag and META description is a big NO. Write something natural and appealing to humans;
  • Avoid keyword stuffing. Don’t fill your blog post with keywords only to increase the keyword density. It is unnatural, provides a negative user experience and will probably get you penalized by search engines.

Conclusions

Some say that keywords don’t really matter when it comes to search engine rankings, and since everyone is entitled to an opinion, I will disagree with that. Same people say that their blogs or websites rank high even if they neglected keyword optimization. That is true, but I’d like to see how well they perform when they’ll be competing with a well optimized blog or website when similar factors are on the table, like: almost same age (possibly younger), number of indexed pages, number of backlinks etc.
Keyword optimization is part of a much bigger and complex process. Acting blind in front of it is like sticking your head in the sand, hoping that if you don’t see anyone, nobody will see you.
Next week, we’ll talk about choosing relevant keywords and discuss a few keyword suggestion tools.
[More]
It’s time once again for a SEO Sunday special, dedicated to links, link building, tips and good practices of linking. It is a known fact that links pointing to your blog are meant to increase its value, not only in the eyes of search engines but also when it comes to authority measuring services like Technorati.
Links are a great tool to increase you search engine ranking and your blog’s visibility, but only when the link building is done smart. Sometimes, people that heard about the importance of link building are willing to do whatever it takes to gather as many links to their websites and blogs as possible, and this is potentially damaging their rankings. So, before going any further, I’ll tell you some things that you should stay away from.

Bad link building practices

More and more link building services are promoted on forums these days. I’m sure that many of you have come across those “1000 directory links for $10″ topics. Well, some people have to make a living, and that’s not to blame, but before paying for such services you should consider a few things.
Most sellers state that links are placed in directories with page rank varying from 2 to 6/7. In most cases, this is only partially true, as that page rank value is only met on the directory’s home page and not on the actual page where your link will be placed.
Further more, these service provider will most likely submit your blog using the same title and description or at most with 2 small variations. Why is this bad? Because out of nowhere, 1000 links to your site, all containing the same information will pop up in search results. How does that sound? That sounds a bit like spam to me, so be careful with it. Link farms don’t work!
Another thing to avoid is buying or selling links through link market websites. These websites have a bad record with Google and have been penalized since their services are seen as a threat to Google’s policy about natural, relevant backlinks. So, if you care about being in Google’s grace, search engine rankings and page rank, think twice before using them.
Whenever you want to buy a link, make sure it stays between you and that website’s owner and also learn as much as you can about his website’s history and previous practices. Also, if you’re going to buy directory links, make sure you study the offer well. No serious provider will offer a good service for such a low fee. Link building through directory submissions can have positive results if managed well.

Link building: Reciprocal links

Reciprocal links are a common practice between start-up bloggers. These have less value than one way links but still can be very helpful under some circumstances. Reciprocal links ease the spider’s circulation and the page rank transfer when encountered between blogs that activate in the same niche, approach the same topics.

Link building: One way links

One way links have a stronger SEO value because they are considered more natural. Getting one way links to your blog from pages that display relevant content and also have high page rank are certain to give you a boost in search engine rankings.
If we’re talking about 100% natural links, there’s basically no way that you could control where these non-reciprocal links come from. You cannot pick the page rank or the anchor text, but still, there’s one thing you can do.
Write good quality posts as they are more likely to attract the interest of higher authority blogs and websites and so, pass some of their search engine trust to you.

Link building: Deep linking

Deep linking is one highly important factor when it comes to link building. It does not only add to the total number of link backs to your blog, but also contributes to traffic levels and increases spiders’ interest in your content, making it more likely for them to index it faster, give it more importance and check back more often to rebuild their cache.
Link building without considering deep linking is meant to fail. Again, great content is one powerful tool to attract such links.

More good linking practices

Consider building a strong internal linking system. Make sure you use relevant anchor text whenever linking to you own post. Do so to ease up spiders’ discovery and navigation through your blog.
Also, if you’re one of those link-love givers, at least do it right. Take 5 more seconds to add at least a relevant title to that external link if not a good anchor text. It costs you nothing but helps the receiver a lot. After all, that’s what link love is supposed to be about, a way to show appreciation.
[More]