J'essaie de créer une alerte e-mail tous les lundis à minuit pour indiquer le nombre de publications publiées la semaine dernière sur le site.
J'ai créé 2 variables: $post_published_to_date
qui correspond au nombre total de publications sur le site (j’ai supposé ici que le site venait d’être créé), et $published_posts
au nombre de publications publiées au cours de la semaine écoulée.
J'ai utilisé date('D', $timestamp) === 'Mon' && $timestamp = strtotime('midnight')
dans la déclaration if
pour savoir s'il est lundi à minuit. Si c'est le cas, un email est envoyé à l'administrateur avec le nombre de publications publiées.
Je ne suis pas sûr que régler $published_posts
à 0 à la fin fonctionnera bien et je crains que $post_published_to_date
ne soit réinitialisé à 0 à chaque fois. Je commence en php donc je ne suis pas vraiment sûr ici.
<?php
$post_published_to_date = 0;
$published_posts = wp_count_posts()->publish;
if(date('D', $timestamp) === 'Mon' && $timestamp = strtotime('midnight')) {
$post_published_to_date = $post_published_to_date + $published_posts;
add_action( 'publish_post', 'number_of_posts_published', 10 ,2 );
function number_of_posts_published( $ID, $post, $published_posts; ) {
if ( 'post' !== $post->post_type)
return;
$to = '[email protected]'
$subject = 'Number of posts last week';
$headers = array('Content-Type: text/html' );
$message = '<h3> Hello ! </h3> <p>
Last week, $published_posts posts were published on your site. ';
wp_mail( $to, $subject, $message, 'Content-Type: text/html' );
}
$published_posts = 0;
}
?>
Cela fonctionnerait-il comme prévu? Conseilleriez-vous des modifications qui constituent de meilleures pratiques?
Merci pour votre temps et votre aide
Voici une utilisation de base de WP_Query qui renvoie un objet contenant toutes les publications de la semaine en cours sous la forme $query
. La dernière ligne renvoie la propriété `found_posts ', qui fournit le nombre pour la requête de la semaine.
$args = array(
'date_query' => array(
array(
'year' => date( 'Y' ),
'week' => date( 'W' ),
),
),
);
$query = new WP_Query( $args );
echo $query->found_posts;
Pour ce qui vous concerne, je ne sais pas si la semaine est basée sur un calendrier empirique ou sur les calendriers de votre site, tels que Paramètres> Général>.
Avec un peu de test, vous devriez être capable de produire des résultats fiables pour votre email chaque semaine. https://codex.wordpress.org/Class_Reference/WP_Query#Date_Parameters