<?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 ) { | |
$post_id = 0; // force the post to be imported | |
} | |
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; |
This comment has been minimized.
This comment has been minimized.
brucevdkooij
commented
Apr 12, 2018
@pardocorp I think it might be because wordpress-importer uses |
This comment has been minimized.
This comment has been minimized.
@brucevdkooij @pardocorp I think that's correct, so assuming the post meta contained in the import file is complete for each post, you'd have to just clear out all existing post meta first (which could be done inside of this |
This comment has been minimized.
This comment has been minimized.
ssuess
commented
Sep 1, 2018
Thanks for this code, it is VERY helpful! I reworked it a bit to delete/replace previous meta, and also to ignore if post_type is attachment (because it is very unlikely that they would have been replaced and it takes way longer to load them). If you are interested, my mods are here: https://gist.github.com/ssuess/09efc6431e91a89895ff6b4adf69e643 |
This comment has been minimized.
This comment has been minimized.
vascofmdc
commented
May 30, 2019
Thanks for this. it worked like you said it would. |
This comment has been minimized.
This comment has been minimized.
ge022
commented
Nov 27, 2019
The post's comments were duplicated, not updated. How can I have the comments update instead of duplicate? |
This comment has been minimized.
pardocorp commentedJul 27, 2017
great function balbuf just a question, Do you know why the wp:meta_key are not updating?