I am creating a web site for my church, Flora First Christian Church, and am using WordPress as a CMS (Content Management System). WordPress’s excellent administration interface will make it straightforward for church members to update the content on an ongoing basis.
Here are some things I am doing to make the web site appear less “bloggy” and more like a real web site:
Remove links on the home page that link to itself. It is described in this post.
Remove links to the current page on posts pages (a page should not link to itself).
Remove any mention of “comments” on posts unless comments are open for that topic. Here is an example from single.php:
<?php if (comments_open()) {
comments_template();
} ?>
Use the plugin My Category Order to display the categories and subcategories in the desired order:
In the sidebar I am intermixing pages and categories, as suggested by Lorelle on WordPress.
Here is a sample from my sidebar.php:
<h2 class=”title”>Categories</h2>
<ul>
<?php
wp_list_pages(‘include=6&title_li=’);
wp_list_categories(‘orderby=order&hierarchical=1&title_li=’); wp_list_pages(‘sort_column=menu_order&include=13,14&title_li=’); ?>
</ul>
This puts page 6 first, followed by the categories as sequenced by the My Category Order plugin, followed by pages 13 and 14 (the numbers are the page’s ID).
My next challenge was harder: Do not display a link to the “Page” that you are currently on. (For example, when you are on the “About” page, do not display a link to the “About” page (“About” may still be in the menu, but in a different color and not as a link).
For the menu of pages across the top of the header, it was easy to remove the link to the current page. The menu link for the current page has a css style of current_page_item. Therefore all that is needed is to add the following lines to style.css:
#header .current_page_item {
display: none;
}
For my sidebar menus of pages and categories, I created a plugin that filters out the link to the current page. It keeps the menu item for the current page, without a link. You may see the code here.
Other plugins I am using:
WP-Sticky: To select a post to always be the first post in a category. I was having a problem with this, only the announcement posts were showing up in my RSS feed. To make the RSS feed be correct, the wp-sticky option “Categories Only” must be set to “Yes”.
Search-pages: Allows pages as well as posts to be included in search ressults
NextGen Gallery: Photo gallery system that includes slideshows. I looked for days at creating slideshows, and finally found this wonderful plugin. Caveat: the slideshow sends full size images over the internet, and the client needs to reduce the images to the display size. This was causing HUGE bandwidth reqirements and slow loading times for viewers, so I had to scale the images before uploading them. This is not a good solution if you want to have a gallery view of the slideshow images.
Different Posts Per Page: Allows different number of posts per page in different categories.
My Category Order: Allows you to set display order of post categories. Note: When upgrading wordPress to a new version, remember to put the provided taxonomy.php file in the wp-includes folder. (Version 2-3-2 of this plugin has a problem in the administration interface – subcategories cannot be ordered)
Bread Crumb Navigation XT: Breadcrumb navigation system.
Filosofo Hide Email Addresses: Hides email addresses within posts and pages from spambots, using JavaScript.
WP-PageNavi: Adds more advanced paging navigation your WordPress blog or web site. I modified it slightly to put the current page number above the previous – next navigation links and to center the navigation links.
Google XML Sitemaps: To generate Google (and other) sitemaps.
Note: Breadcrumb Navigation XT: Dreamweaver MX could not upload the file breadcrumb-navigation-xt-admin.php because the name is too long! I renamed it, uploaded it, and then logged in to the server by SSH to rename the file to the proper name.
Caching
To have images be cached by the user’s browser for a month, yet allow the text to be updated often, I put the following in the .htaccess file:
ExpiresActive On
### Expire everything 1 hour from when accessed
ExpiresDefault “access plus 1 hour”
### Expire style sheet after 1 week
ExpiresByType text/css “access plus 1 week”
### Expire images after one month
ExpiresByType image/jpeg “access plus 1 month”
ExpiresByType image/png “access plus 1 month”
ExpiresByType image/gif “access plus 1 month”
### Expire Javascript after 1 week
ExpiresByType application/x-javascript “access plus 1 week”