Open sudar opened 6 years ago
Up please ;)
I'm gonna try to quick fix it for now.
WP does it in includes/export.php on line 312
Here's the code :
/**
* Output term meta XML tags for a given term object.
*
* @since 4.6.0
*
* @param WP_Term $term Term object.
*/
function wxr_term_meta( $term ) {
global $wpdb;
$termmeta = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->termmeta WHERE term_id = %d", $term->term_id ) );
foreach ( $termmeta as $meta ) {
/**
* Filters whether to selectively skip term meta used for WXR exports.
*
* Returning a truthy value to the filter will skip the current meta
* object from being exported.
*
* @since 4.6.0
*
* @param bool $skip Whether to skip the current piece of term meta. Default false.
* @param string $meta_key Current meta key.
* @param object $meta Current meta object.
*/
if ( ! apply_filters( 'wxr_export_skip_termmeta', false, $meta->meta_key, $meta ) ) {
printf( "\t\t<wp:termmeta>\n\t\t\t<wp:meta_key>%s</wp:meta_key>\n\t\t\t<wp:meta_value>%s</wp:meta_value>\n\t\t</wp:termmeta>\n", wxr_cdata( $meta->meta_key ), wxr_cdata( $meta->meta_value ) );
}
}
}
Edit. I added the following function (same as comment_meta()) :
protected function term_meta($term)
{
global $wpdb;
$termmeta = $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->termmeta WHERE term_id = %d", $term->term_id));
if (!$termmeta) {
return new Oxymel();
}
$oxymel = new WP_Export_Oxymel_Snake();
foreach ($termmeta as $meta) {
$oxymel->tag('wp:termmeta')->contains
->tag('wp:meta_key', $meta->meta_key)
->tag('wp:meta_value')->contains->cdata($meta->meta_value)->end
->end;
}
return $oxymel;
}
And it is called here :
->oxymel($this->term_meta($term));
protected function terms($terms)
{
$oxymel = new WP_Export_Oxymel_Snake();
foreach ($terms as $term) {
$term->parent_slug = $term->parent ? $terms[$term->parent]->slug : '';
$oxymel->tag('wp:term')->contains
->tag('wp:term_id', $term->term_id)
->tag('wp:term_taxonomy', $term->taxonomy)
->tag('wp:term_slug', $term->slug)
->oxymel($this->term_meta($term));
if ('nav_menu' !== $term->taxonomy) {
$oxymel
->tag('wp:term_parent', $term->parent_slug);
}
$oxymel
->optional_cdata('wp:term_name', $term->name)
->optional_cdata('wp:term_description', $term->description)
->end;
}
return $oxymel->to_string();
}
I take this issue.
I have done the test manually with success. I have also tested successfully the import of the exported XML file.
The command composer behat
doesn't work on my computer. It always returns this error ERROR 1045 (28000): Access denied for user 'wp_cli_test'@'localhost' (using password: YES)
So I could not run the automatic tests.
The
wp export
command is not exporting term meta data.But the WXR file created directly from wp-admin ui (Tools -> Export) includes the term meta data.
Steps to reproduce
update_term_meta
oradd_term_meta
functionwp_termmeta
tablewp export
commandwp:termmeta
wp:termmeta