没有一种简单的方法可以修改在下运行的导出查询/wp-admin/export.php
.
它不使用WP_Query
或者get_posts()
包装器,而它当前使用此查询:
$post_ids = $wpdb->get_col( "SELECT ID FROM {$wpdb->posts} $join WHERE $where" );
虽然可以通过
export_args
滤器
在票证中#28146 建议使用get_posts()
相反,但它当前未处于活动状态。
解决方法hack 要仅导出带有特色图像的帖子,请执行以下操作:
以下是此类插件的主要部分:
步骤#1
首先,我们为过滤器的设置添加HTML:
/**
* Custom Export Filters
*/
add_action( \'export_filters\', function() {
?>
<p><ul class="wpse-export-filters">
<li>
<label><?php esc_html_e( \'With a featured image:\', \'mydomain\' ); ?></label>
<input type="checkbox" name="wpse_with_featured_image" value="1">
</li>
</ul></p>
<?php
} );
步骤#2export_wp
要修改导出过程,请执行以下操作:
/**
* Modify the export query
*/
add_action( \'export_wp\', function( Array $args )
{
// User input
$with_featured_image = filter_input( INPUT_GET, \'wpse_with_featured_image\' );
// Check if we should activate our custom filter
if( wp_validate_boolean( $with_featured_image ) )
add_filter( \'query\', \'wpse_modify_export\' );
return $args;
} );
其中
wpse_modify_export()
回调定义为:
/**
* Inject sub-query to find posts with featured image
*/
function wpse_modify_export( $query )
{
global $wpdb;
// Target the next posts query
if( false === strpos( $query, "SELECT ID FROM {$wpdb->posts}" ) )
return $query;
// Remove filter callback
remove_filter( current_filter(), __FUNCTION__ );
// Inject sub-query to find posts with featured image
$sql = " {$wpdb->posts}.ID IN ( SELECT DISTINCT post_id
FROM {$wpdb->postmeta} pm WHERE pm.meta_key = \'_thumbnail_id\' ) AND ";
return str_replace( \' WHERE \', \' WHERE \' . $sql, $query );
}
希望您可以根据自己的需要进行调整。