-
-
Save terrillmoore/70f7fefde462dc632515db28cc78a07a to your computer and use it in GitHub Desktop.
Force the WordPress importer to update existing posts instead of skipping them
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* When using the WordPress Importer, update existing | |
* posts instead of skipping them. Updates content according | |
* to the import file even if the existing post was updated | |
* more recently. | |
* | |
* To use, drop this file into your /mu-plugins/ folder or | |
* copy this code into your functions.php file. | |
*/ | |
class WPImporterUpdate { | |
protected $existing_post; | |
function __construct() { | |
add_filter( 'wp_import_existing_post', [ $this, 'wp_import_existing_post' ], 10, 2 ); | |
add_filter( 'wp_import_post_data_processed', [ $this, 'wp_import_post_data_processed' ], 10, 2 ); | |
} | |
function wp_import_existing_post( $post_id, $post ) { | |
if ( $this->existing_post = $post_id ) { | |
error_log('old post id found: '. $post_id); // log old post id | |
if ( get_post_type( $post_id ) == 'attachment' ) { // check if this is attachment | |
error_log("but " . $post_id . " is an attachement, so ignoring"); // log attachement ignoring | |
$post_id = $post_id; // if attachment ignore, set post_id to real id | |
} else { | |
global $wpdb; | |
$wpdb->delete( 'wp_postmeta', array( 'post_id' => $post_id ) ); //delete existing meta (assumes import contains all meta needed for post) | |
$post_id = 0; // force the post to be imported | |
} | |
} else { | |
error_log('new post created.'); // log new post created | |
} | |
return $post_id; | |
} | |
function wp_import_post_data_processed( $postdata, $post ) { | |
if ( $this->existing_post ) { | |
// update the existing post | |
$postdata['ID'] = $this->existing_post; | |
} | |
return $postdata; | |
} | |
} | |
new WPImporterUpdate; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment