J'utilise ce code pour générer un flux à partir du dernier post modifié
mysqli_query( $conn,
"SELECT * FROM wp_posts
WHERE post_status = 'publish'
AND post_type = 'post'
AND DATE(post_modified) > DATE(post_date)
ORDER BY post_modified DESC
LIMIT 50"
);
et cela fonctionne parfaitement, maintenant je dois reproduire dans un plugin WordPress et j'utilise ce code:
$lastupdated_args = array(
'paged' => $paged,
'orderby' => 'modified',
'ignore_sticky_posts' => '1'
);
mais dans ce cas, il montre toutes les publications commandées de ma dernière modification et pas seulement la publication modifiée.
Est-il possible de réparer?
Vous pouvez utiliser le filtre posts_where
:
// Add custom filter
add_filter( 'posts_where', 'wpse_modified' );
// Fetch posts
$query = new WP_Query( $lastupdated_args );
où vous pouvez définir le rappel de filtre comme suit:
function wpse_modified( $where )
{
global $wpdb;
// Run only once:
remove_filter( current_filter(), __FUNCTION__ );
// Append custom SQL
return $where . " AND {$wpdb->posts}.post_modified} != {$wpdb->posts}.post_modified} ';
}
Bien qu’il soit pratique de pouvoir utiliser ce type de requête de date :
$args = [
'date_query' => [
[ 'before' => 'post_modified' ]
],
];
et
$args = [
'date_query' => [
[
'column' => 'post_modified_gmt',
'after' => 'post_date_gmt',
'inclusive' => false
]
],
];
C'est peut-être une idée pour un billet de base! ;-)
$lastupdated_args = array(
'paged' => $paged,
'post_status' => 'publish',
'post_type' = 'post',
'orderby' => 'modified',
'ignore_sticky_posts' => '1'
);
Je crois que ceci vous aidera.