Lost the `wp_options` table: what’s the best way to restore the site?

Uh oh, that’s an important table. You might have lost a bunch of options, but you can still repair the database. WordPress allows a repair mode, which you can repair the database. Open the wp-config.php file using FTP, and add this line before the ABSPATH: define( ‘WP_ALLOW_REPAIR’, true ); now head over to : http://yourdomain.com/wp-admin/maint/repair.php … Read more

Optimize WordPress Query that take 5 seconds to execute

I had the exact same issue. The problem is not one that can be fixed without modifying some code that you probably shouldn’t (or perhaps writing a filter or a ‘drop-in’). The issue is the CAST directive in the SQL statement. It CASTS the entire table before it does anything, with the amount of records … Read more

Displaying content from one WP site on separate WP site

Yeah $wpdb2 = new wpdb(‘dbuser’, ‘dbpassword’, ‘dbname’, ‘dbhost’); // get 10 posts, assuming the other WordPress db table prefix is “wp_” $query = “SELECT post_title, guid FROM wp_posts WHERE post_status=”publish” AND post_type=”post” ORDER BY post_date DESC LIMIT 10″; $someposts = $wpdb2->get_results($query, OBJECT); foreach($someposts as $somepost) echo “<a href=\”{$somepost->guid}\”>{$somepost->post_title}</a><br />”; Another way is to use the … Read more

Use wpdb->prepare for `order by` column name

You can’t use prepare for column names, and you can’t really use it for the sort order either. prepare will always quote the string. You will need to swap in the values yourself. Rather than try to “sanitize” the data, I’d use a white-list approach. $orderby = array( ‘date’ => ‘post_date’, // etc ); $sortorder … Read more

Using transients in conjunction with memcached

When and how to use transients or the object cache is a bit tricky and site-dependent. Here’s the breakdown: When not using a persistent object cache (like memcached): Transients are stored in the database Objects in the object cache are only cached for the duration of the page request. When using a persistent object cache … Read more

WordPress Unit Testing – Cannot Create Tables

You’ve just discovered an important feature of the core test suite: it forces any tables created during the test to be temporary tables. If you look in the WP_UnitTestCase::setUp() method you’ll see that it calls a method called start_transaction(). That start_transaction() method starts a MySQL database transaction: function start_transaction() { global $wpdb; $wpdb->query( ‘SET autocommit … Read more

WordPress database error with latest WP – “WP_termmeta doesn’t exist”

You are missing a table. You can add it using this sql CREATE TABLE `wp_termmeta` ( `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `term_id` bigint(20) unsigned NOT NULL DEFAULT ‘0’, `meta_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `meta_value` longtext COLLATE utf8mb4_unicode_ci, PRIMARY KEY (`meta_id`), KEY `term_id` (`term_id`), KEY `meta_key` (`meta_key`(191)) ) ENGINE=InnoDB AUTO_INCREMENT=3255 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Database connection close

You don’t have to worry about closing connection to you DB because it will be automatically closed when a request will be processed by your server. But if you have to close it, then you can do something like this: @mysql_close( $wpdb->dbh ); Pay attention that it could lead to unexpected results because other plugins … Read more

Automate WordPress Database Upgrade

So are you going to automate your backup as well to be triggered before the DB upgrade starts? While the question has merit especially in a multisite context (in which the scenario is a little different) I am not sure that it is smart thing to do. That message could have said “this is your … Read more