¿Cómo exporto solo las publicaciones que tienen una imagen destacada?
Sólo quiero exportar publicaciones.
¿Cómo exporto solo las publicaciones que tienen una imagen destacada?
Sólo quiero exportar publicaciones.
No hay una manera fácil de modificar la consulta de exportación que se ejecuta en /wp-admin/export.php
.
No usa el envoltorio WP_Query
o get_posts()
, en su lugar usa esta consulta actualmente:
$post_ids = $wpdb->get_col( "SELECT ID FROM {$wpdb->posts} $join WHERE $where" );
sin filtros explícitos, aunque es posible filtrar algunas configuraciones a través del filtro export_args
.
En el ticket # 28146 , se recomienda reescribirlo usando get_posts()
en su lugar, pero no está activo actualmente.
Aquí hay un tipo de piratería para exportar solo publicaciones con una imagen destacada :
Aquíestánlaspartesprincipalesdeestecomplemento:
PrimeroagregamoselHTMLparalaconfiguracióndenuestrofiltro:
/***CustomExportFilters*/add_action('export_filters',function(){?><p><ulclass="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
} );
A continuación, nos conectamos a export_wp
para modificar el proceso de exportación:
/**
* 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;
} );
donde la devolución de llamada wpse_modify_export()
se define como:
/**
* 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 );
}
Espero que puedas ajustar esto a tus necesidades.
Lea otras preguntas en las etiquetas posts