Locked Out of vBulletin?

Recently I ran into an issue where I could not log into vBulletin (after changing the forum URL from (example.com/forums/ to forums.example.com). Lesson learned - you need to clear the cookie path in the admin before changing over to the new URL.

If it is too late though, you can download a file called “tools.php” that is in the do_not_upload file of the standard vBulletin folder. Upload that to the admincp folder along with the “install” folder and then go to your forum’s URL /admincp/tools.php. You will be prompted for your customer ID, and then you can reset your cookie settings.

Once you are done, make sure to delete the file and install folder. Login should once again work!

WordPress Logic: If Is Logged In

There are several tidbits of code that I have collected over the past few years that make it easier and easier to turn a simple WordPress installation into a very functional content management system (CMS). There are many times when it would be nice to show logged in members certain bits of information (certain categories, posts, or just a simple "Welcome back!") and of course there is a simple way of doing this:

PHP:
<?php if (is_user_logged_in()): ?>

That bit of code will allow you to do something like this which will allow you to show the logged in user's preferred user name (selected in the User preferences), and then a list of member only pages (private page parent is page ID 20 - I am showing all sub pages of the members-only pages marked as private). If the user is not logged in, they will get a Welcome visitor! greeting :

PHP:
<?php if (is_user_logged_in()) : ?>
    <?php global $user_identity;get_currentuserinfo();?>
   
    <p>Welcome back <?php echo $user_identity;?></p>
    <p>Here is a list of private pages only viewable by Members:</p>
        <ul>
            <?php wp_list_pages('title_li=&child_of=20'); ?>
        </ul>
<?php else :?>
    Welcome, visitor!
<?php endif;?>

You can make it as simple as a change in greeting for members and non-members, or put in specific logic like I did with showing the pages. The potential is limitless.

Search Specific Category in WordPress

There are some times when you want to limit your search to a particular category, or perhaps multiple categories. This is relatively simple to do in WordPress by adding a hidden field to your search code. (See example below)

PHP:
<form method="get" id="searchform" action="<?php bloginfo('home'); ?>/">
<div><input type="text" value="<?php echo wp_specialchars($s, 1); ?>" name="s" id="s" />
<input type="hidden" name="cat" value="22" />
<input type="submit" id="searchsubmit" value="Search" />
</div>
</form>

You can see I added my hidden input field on the third line. When I add this in, it then adds onto the query used to search. Your search will go from something like http://www.sandboxdev.com/?s=WordPress to http://www.sandboxdev.com/?s=WordPress&cat=22 and will only return posts in the category ID you choose.

Updating From Wordpress 2.2 to 2.3

I have been using WordPress for almost 4 years and have collected a number of database tables, plugin specific directories, and miscellaneous junk along the way on a number of my sites. I wanted to take some time and really do some spring cleaning. After a few hours - I was very pleased with the results and I wanted to share what worked for me.

Here are the steps I recommend to really clean out a WordPress installation:

  1. Make a backup of everything. You never know what you are going to get into - and a backup is very important incase things go bad.
  2. Make a test installation. I always use a test server when I know I am going to make several changes. This way, jappler.com was not down while I was testing and cleaning up. With your backup files, import your database on the test server, and grab the latest version of WordPress (hopefully using subversion)
  3. Remove old or unused plugin database tables. I then went into the WordPress database and removed (dropped) any tables that were created by any of my old or unused plugins that were still hanging around.
  4. Weed out old, unused plugins. I went through my plugins and deleted any old or unused plugins. I had a few "I should really use this" plugins that were never used - and to tidy up - I deleted them before uploading them to the test server environment. Make sure to also remove any files/folders that old plugins might have used in the root folder and or wp-content.
  5. Move your theme over. Upload the theme file over to the test server.
  6. Move your uploads over/miscellaneous files. Upload the uploads folder (wp-content) so you will have all your old uploads.
  7. Update WordPress. Run through the upgrade process (/wp-admin/upgrade.php).
  8. Debug your plugins. Log in, create a test post to make sure you can write to the database without any errors. I ran into a few problems with this, so I deactivated my plugins and activated them one by one. I found I had a few plugins that were not compatible with WordPress 2.3, but there were updates available, so I updated my plugins and moved on.
  9. Import Tags (if you have them). I used Ultimate Tag Warrior and WordPress has an import option for that (Manage > Import) for that.
  10. Display your WordPress tags in your WordPress theme. Now that tagging is available within WordPress without any plugins, you can easily display tags by using:
    PHP:
    <?php the_tags(‘before’, ’separator’, ‘after’); ?>

    You can also use a tag cloud (see Codex documentation)

  11. Make another backup. I always make another backup of my sites when I am happy with the end result - just incase something happened - I would not lose all my hard work.
  12. Enjoy your updated installation. Hey - you did it! A clean, lean, updated web site. Nice work. Now go and enjoy it!

Remove Border Around Flash Objects In IE.

If you have a project where you are using

HTML:
<object> and <embed>

and in IE, when you hover over the flash object and a border appears, there is a fix available: SWFObject: Javascript Flash Player detection and embed script. I have used it with some flash sites and it works great.

Highlighted Navigation with WordPress

Ever wonder how to automatically highlight your tabs or navigation depending on the category, page, or post you are on? Wonder no more! To make this work, there are three bits of code you will need:

  • The header code to control the body ID (and to tell us what page we are on)
  • The navigation code
  • The CSS to control the highlight

For this example, I will use this web site as an example.

The header code

PHP:
<?php
$current_page = $post->ID;
$parent = 1;
while($parent) {
$page_query = $wpdb->get_row("SELECT post_name, post_parent FROM $wpdb->posts WHERE ID = '$current_page'");
$parent = $current_page = $page_query->post_parent;
if(!$parent)
$parent_name = $page_query->post_name;
}
?>

<body id="<?php echo (is_page()) ? "$parent_name" : ((is_home()) ? "blog" : ((is_search()) ? "other" : ((is_single()) ? "blog" : "blog"))); ?>">

The XHTML code (navigation)

HTML:
<div id="tabs">
<ul>
<li id="nav-home"><a href="/index.php">Home</a></li>
<li id="nav-blog"><a href="/blog/">SDAC Blog</a></li>
<li id="nav-websolutions"><a href="/web_solutions/">Web Solutions</a></li>
<li id="nav-networksolutions"><a href="/network_solutions/">Network Solutions</a></li><li id="nav-userinterfacesolutions"><a href="/user_interface_solutions/">User Interface Solutions</a></li>
<li id="nav-customsolutions"><a href="/custom_solutions/">Custom Solutions</a></li>
<li id="nav-search"><a href="/search/">Search</a></li>
</ul>
</div>

The CSS code

CSS:
#home #nav-home, #about_us #nav-home, #contactus #nav-home, #faqs #nav-home,
#disclaimer #nav-home, #search #nav-search,
#blog #nav-blog, #web_solutions #nav-websolutions, #network_solutions #nav-networksolutions,
#user_interface_solutions #nav-userinterfacesolutions,
#custom_solutions #nav-customsolutions, #tos #nav-home, #sitemap #nav-home {
      background:url("images/tabs/active_tab_bg.gif") repeat-x;
      border-right:1px solid #676e78;
      }
         
#tabs li:hover, #tabs li:hover a {
    background: url("images/tabs/active_tab_bg.gif") repeat-x;
    color:#212933;
    }

General information
When you view the code for a page, you will notice that the header code will find out if the page viewed is infact a page. If it is a page, it gets the page parent (I use parent and child pages in my web site organization). The tabs are created with unique li IDs. So that a combination of #home (the body ID) and the #nav-home (li ID) will show as a highlighted tab. With this example, this case will only occur when we are on the home page because #home is a page (the home page) so the home tab will be highlighted. When we click on "SDAC Blog", the body ID will then be #blog, so now the #blog #nav-blog combination will force the "SDAC Blog" tab to be highlighted. Take a look at the CSS to see where to define the "cases".

Hopefully this took some of the mystery out of working with WordPress, navigation, and how to put everything together.

Common Wordpress Problems and Their Solutions

Ever since we have been listed on the WordPress Consultants list, I have received a number of phone calls from panicked blog/web site owners regarding WordPress errors. Since I have seen a trend in the past month, I thought I would document some of the problems and their solutions.

Error establishing a database connection

Solution: The most common solution is to look and make sure you have typed in the correct user name/password/database name in your wp-config.php file. How can you check? Log into cPanel or Plesk, or directly to mysqladmin. Make sure that the user has the correct privileges to the database and that the password is correct. If you are unsure about the password, you can always delete the user and re-add them (remember to give the newly created user the correct privileges). If you are still having an issue, and you have a high traffic blog/web site, call your web host and see if you are maxing out the server connections - you/they might need to adjust their Apache/MySQL settings or you might need to start using WP-Cache to help control the connection issues. More than likely - you just entered in your user name/password/database incorrectly. This is by far the most common issue I have seen so far.

The default theme appears instead of your chosen custom theme when making CSS changes.

Solution: This is a known issue and hopefully will be addressed soon. If this happens, log into the WordPress Admin and choose your custom theme under "Presentation".

You are not able to edit your widgets' content using Safari

Solution: Grab the widget content that you want and drop it below or above another widget content box in the Widgets area in the WordPress Admin. Once you move it, the edit option will appear. Edit the content, and drag it back to it's original location.

My Page Order WordPress Plugin Modifcation

I have been working with a client recently that was using the My Page Order plugin for the WordPress CMS I set up. They had several "draft" pages they used for templates and did not want them to show up in the My Page Order Admin interface. After looking at the SQL code, I added in a piece that would only show published (live) pages.
To make the same change in your code, open up the plugin file (mypageorder.php), go to line 47 and change the following line:

PHP:
$results=$wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_parent = $parentID and post_type = 'page' ORDER BY menu_order ASC");

to:

PHP:
$results=$wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_parent = $parentID and post_type = 'page' and post_status='publish' ORDER BY menu_order ASC");

Now, only the pages you really want to order will appear in the menu.

bbPress and WordPress Integration

Here is a quick guide if you are looking to integrate WordPress and bbPress so that your WordPress users can log into bbPress and your bbPress users can log into WordPress.

  1. Download/install/configure WordPress. You will need to upload the WordPress files to your web site directory and create a WordPress database. The installation process for WordPress is painless.
  2. Download/install/configure bbPress. For the easiest and painless experience, upload the bbPress files into the same directory your WordPress files are in (most likely your web root folder).
  3. Do not create a bbPress database, rather define use your WordPress database settings in the bbPress config.php file. At the bottom of the config.php file for bbPress there are preferences that you will need to set so that bbPress knows to share cookies and authentication. This is documented in the config.php file so just follow directions.

That is it. Once you have both bbPress and WordPress set up and configured, your users can then enjoy having accounts to log into both systems using the same user name and password.

Terms of Use Javascript

Need: A script that a client could easily call within a URL to force the users to agree to their terms of use before downloading a file.

Solution:Either put the following code in the header, or in a .js file to include:

JAVASCRIPT:
<script type="text/javascript">
function terms(){
    question = confirm("Terms of Use text here")
 if (question !="0"){
        document.URL()
    }
  }
</script>

Then, call this code in your HTML code by using:

HTML:
<a href="http://www.sandboxdev.com" onclick="terms();return false;" value="Display Terms of Use" />Download Link</a>