Posted on
Late yesterday afternoon a client asked if I could look at a business’s WordPress installation. They had posts in several categories but only wanted to show the “Latest News” posts in the archives.
WordPress is designed around blog posts, whereas I find that many business or company sites are designed around pages (eg About Us, Contact Us) – and don’t use WordPress’ powerful blogging tools on the front page. My site is an example – the content on the home page doesn’t change that much.
This means that many of the solutions are also geared around blog-post design.
While searching I found a few examples of how to exclude a specific category from the archives, when what I needed was to include only one category in the WordPress archives – generated in the theme by wp_get_archives().
The solution is to add a filter that modifies the SQL used by wp_get_achives() to the theme’s function.php:
add_filter( 'getarchives_where', 'customarchives_where' );
add_filter( 'getarchives_join', 'customarchives_join' );
function customarchives_join( $x ) {
global $wpdb;
return $x . " INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)";
}
function customarchives_where( $x ) {
global $wpdb;
$include = '1'; // category id to include
return $x . " AND $wpdb->term_taxonomy.taxonomy = 'category' AND $wpdb->term_taxonomy.term_id IN ($include)";
}
Replace ’1′ with the category ID (wp-admin > posts > categories > edit, then in the address bar it is directly after ‘&tag_ID’) and that’s it. wp_get_archives() will now only display posts from that category.
I found this in http://wordpress.org/support/topic/wp_get_archives-and-conditional-tags?replies=6#post-1578041 (thanks Paul!).
Posted on
1. Download all files from eg http://example.com, upload to eg http://localhost/example/.
2. Export mysql database from example.com
3. Create a local mysql database with the same user, password and database name. These can be found in wp-config.php
4. Import the database into your new local account
5. Log in to the database, and do:
update wp_options set option_value='http://localhost/example/' where option_id=1
You’ll now be able to log in at http://localhost/example/wp-admin, using the same username and password as http://example.com/wp-admin.
5. In WordPress, click ‘Settings’ and change the blog address to your local address.
6. Profit!
Posted on
A quick one today. I was working on a mysql database that used unix timestamp produced by PHP’s time() function.
I needed to be able to quickly convert this time to a human-readable format. In bash,
date -d @timestamp
is a quick way to convert.
In a terminal shell eg:
# date -d @1224992980
Sun Oct 26 14:49:40 EST 2008
In a MySQL client, you could also use
select date(from_unixtime(column_name)) from table_name;
Or if you want a little more flexibility in the output, for example outputting 27/02/09, you could do:
select date_format(from_unixtime(column_name), ‘%d/%m/%y’) from table_name;
This post is one of my most popular posts. Did you find the information you were after? Please tell me in the comments!
Posted on
I generally only need to do this once for each project, which means I don’t do it often enough to remember. Log in to the MySQL server as root, then:
create database newdb;
grant all on newdb.* to 'newuser'@'localhost' identified by 'newuser';
set password for 'newuser'@'localhost' = password('newpass');
And you’re ready to go!
Replace newdb, newuser and newpass with whatever you like.