Building A Full Site With WordPress
Most of the time when I build a website and use a content management system, I use Drupal. I recently finished a site that had basic needs, and decided to give WordPress a go. As I was going through it, I had questions about how to do certain things, and I'm going to post all the answers here.
If there are javascript or other auxiliary files in the theme, and you want to link to them, use bloginfo() function, like this:
<script src="<?php bloginfo('stylesheet_directory'); ?>/jquery.js"></script>
If you want a page to look different than the other ones, or if there's some code that needs to appear on a particular page that can't be edited by regular users in the WordPress UI, you can make a special template for it. First, start the template with a comment link this one:
<?php /* Template Name: A Special Page */ ?>
Then when you create the page, there will be a Page Template selector in the right sidebar. Choose the template you created, and you're in business. I used this to set up a PayPal form and a bit of Javascript on a couple pages.
In your template files, you can check whether you're the home page with the
is_home()
function, which returns true if you're on the home page (duh).The WordPress template system has many file names that are magical and recognized for certain purposes, and which can be called by certain functions. Here are a few of them. The complete list is on the WordPress Codex:
- header.php - included in other templates with
get_header()
- footer.php - included with
get_footer()
- sidebar.php - included with
get_sidebar()
- style.css - the main stylesheet, but also contains the metadata for your template
- single.php - used for single posts
- page.php - used for single pages
- archive.php - If it exists, this is used for anything that's browsed and isn't a single post (date archives, category archives, etc). Otherwise, index.php is used.
- comments.php - included with
comments_template()
- header.php - included in other templates with
To include different selections of posts from the database, use the
query_posts()
function. For example, you can pull two posts from one category and then the five most recent posts from the entire pool of posts, and display them in different parts of the page.The WordPress Codex is a large and generally helpful resource. While developing a theme for WordPress, I spend a lot of time with the Template Tags page.
WordPress is very capable for building a complete website, or for just bolting on some quick page editing to an old school, no CMS, website. I like that WordPress feels relatively small and fast compared to Drupal. I do prefer Drupal for general content management and development for websites where blogging is not the major focus, but it's nice to have both tools available.