J'ai créé un plugin post view view qui incrémente un décompte chaque fois qu'une publication est vue/actualisée.
Le décompte fonctionne correctement, mais si vous éditez une publication en direct, la fonctionnalité de sauvegarde automatique apparaît pour saisir le nombre de vues lorsque la sauvegarde automatique est générée. Ainsi, lorsque je mets à jour la publication, le compte diminue valeur actuelle.
Par exemple, le nombre de vues = 100, j’ouvre un poste à modifier, une sauvegarde automatique est générée, alors que 50 personnes regardent le message, je clique sur la mise à jour du message, le nombre de vues passe de 150 à 100
Mon code de plugin est:
function update_post_views_counter()
{
if(is_single())
{
if(get_post_type() == "post")
{
$id = get_the_ID();
$views = get_post_meta($id, "total_views", true);
if($views == "")
{
$views = 1;
add_post_meta($id, "total_views", $views);
}
else
{
$views++;
update_post_meta($id, "total_views", $views);
}
maintain_top_posts($id, $views);
}
}
}
add_action("wp_head", "update_post_views_counter");
Existe-t-il un moyen d’exclure la mise à jour de la méta valeur de total_views post lors de la mise à jour d’une publication, lorsqu’une sauvegarde automatique a été générée ou non?
Ceci est différent des méta-valeurs communes perdues car les données sont en cours d’enregistrement mais pas les plus récentes.
J'ai réussi à trouver la raison derrière cela et à créer une solution adaptée à mes besoins.
Sous les options de l'écran de la page de modification, vous trouverez une option appelée "Champs personnalisés". Cela répertorie toutes les méta-valeurs personnalisées qui ont été sauvegardées dans la publication et vous permet de créer de nouvelles valeurs et de modifier celles existantes.
Lorsque vous ouvrez la publication à modifier, le nombre de vues à ce moment-là est ajouté au champ de saisie de la section Champs personnalisés. Lorsque j’économise plusieurs minutes plus tard, même si le nombre de vues a augmenté, la valeur affichée est celle qui a été ajoutée lors de l’ouverture de la fenêtre de modification.
Pour résoudre ce problème, j'ai ajouté le code suivant à mon fichier de fonctions de thèmes afin de supprimer la section Champs personnalisés de la fenêtre d'édition.
<?php
function remove_post_custom_fields() {
remove_meta_box( 'postcustom' , 'post' , 'normal' );
}
add_action( 'admin_menu' , 'remove_post_custom_fields' );
?>