Le plugin sur lequel je travaille actuellement est une vue supplémentaire de la liste des publications: un calendrier, comme vous pouvez le voir sur la capture d'écran suivante.
Affichage du calendrier administrateur avec MP6 et largeur de l'écran de poche.
Désormais, chaque jour indique uniquement le nombre de messages.
Ce que je veux ajouter, c'est un lien pour ajouter un nouveau message . Mais ce lien devrait non seulement vous amener à l'écran
~/wp-admin/post-new.php?post_type=abc
, mais aussi ajouter une date de publication prédéfinie - celui du jour où vous avez cliqué.
Jusqu'à présent, il y a plusieurs options:
preview_post_link
-. Ensuite, j'attache un autre rappel pour intercepter l'option gmt_offset
- avec un filtre 'pre_option_gmt_offset'
- simplement pour modifier le calcul effectué dans touch_time()
pour renvoyer la date actuelle. Le problème est que le calcul est time() + ( $offset * HOURS_IN_SECONDS );
et que la seule valeur que l’on pourrait changer est $offset
.Toute idée appréciée. Code qui prouve le concept encore plus. J'annoncerai une prime dès qu'il y aura quelques brouillons utilisables comme réponses.
Je pense que la meilleure solution, comme indiqué dans le chat, est le point 3, qui consiste à ajouter par programme un brouillon (ou un statut de message personnalisé) via l'utilisation de wp_insert_post
où, parmi d'autres paramètres, vous pouvez définir des préférences;
'post_date' => [ Y-m-d H:i:s ] //The time post was made.
'post_date_gmt' => [ Y-m-d H:i:s ] //The time post was made, in GMT.
... sans avoir à intercepter gmt_offset
via pre_option_gmt_offset
qui est de toute façon une impasse.
Remplacer également la méta-boîte de publication, le cloner, le reconstruire, quelle que soit la manière dont vous voulez le dire - est potentiellement désastreux entretien cauchemar .
Si nous y réfléchissons, l’ajout d’un brouillon (ou du statut de publication personnalisé de votre choix) est bien moins gênant que les idées susmentionnées.
Le seul inconvénient de wp_insert_post
est que nous insérons physiquement une publication dans la base de données. Par conséquent, à certains égards, nous polluons la base de données avec ce qui serait normalement un brouillon automatique.
C'est là que wp_cron
entre en jeu.
Comme vous l'avez mentionné dans le chat, vous pouvez vouloir ajouter un champ personnalisé (préfixé avec un trait de soulignement) pour marquer ces entrées de publication, selon que vous vous en teniez ou non au statut de la publication draft
.
SI l'utilisateur ne publie pas , nous pouvons considérer que cet article a été ignoré et qu'il doit donc être marqué pour nettoyage.
J'irais même jusqu'à ajouter un avis d'administrateur personnalisé qui indique à l'utilisateur que s'il ne publie pas l'article, il ne sera pas ajouté à l'agenda en tant qu'entrée et sera affecté au nettoyage à une date ultérieure.
C’est la solution la plus sûre, la plus saine et la plus durable qui soit jusqu’à ce que nous obtenions (le cas échéant) la possibilité de définir par programme les entrées de formulaire sur l’écran de post-édition via des variables de requête autres que (post_title/content/excerpt
), qui semblent être les seules à fonctionner actuellement.
La seule autre option à laquelle je puisse penser serait de définir la valeur des entrées de date via JavaScript et/ou jQuery - ce qui serait facile à faire, mais vous n'avez aucune garantie que l'utilisateur a activé JavaScript, ce qui si ce n'est pas le cas - ceci échouerait.
Nous savons qu'il existe des cas Edge pour le statut de publication personnalisée qui pourraient être préoccupants, mais compte tenu de leur utilisation dans votre application, je pense que le risque est minime de les utiliser.