Cas d'utilisation:
J'ai un type de message lié à un spectacle de musique. L '«heure du spectacle» est saisie à travers la date de publication qui est fixée à une date ultérieure. J'ai trouvé une fonction qui prend les futurs articles de blog datés et laisse la date, mais marque le message comme publié lors de la sauvegarde, mais je n'ai pas réussi à le personnaliser pour un type de message personnalisé.
La fonction est ci-dessous.
<?php
function setup_future_hook() {
// Replace native future_post function with replacement
remove_action('future_post','show', '_future_post_hook');
add_action('future_post', 'show', 'publish_future_post_now');
}
function publish_future_post_now($id) {
// Set new post's post_status to "publish" rather than "future."
wp_publish_post($id);
}
add_action('init', 'setup_future_hook');
?>
custom-post-types
init
Curtismchale
la source
la source
remove_action
etadd_action
? Votre deuxième paramètre est'show'
, mais ne devrait-il pas être la fonction que vous ajoutez ou supprimez?Réponses:
Génial combinant à la fois les réponses de Mike et Jan. J'ai trouvé cela qui ne fonctionne que sur le type de message en question. Nous n'avons pas besoin du conditionnel de show car le hook 'future_show' ne saisit que le type de post de show et le met à jour.
la source
Je ne peux pas le dire avec certitude, car je n'ai pas votre site pour tester, mais je crois que vous avez juste besoin de supprimer
'show'
deremove_action()
et d'add_action()
appels. Lawp_publish_post()
fonction est agnostique en ce qui concerne les types de publication, du moins c'est ce qu'elle apparaît à la lecture du code. Essayez donc ceci:Bien sûr, si vous voulez vous limiter à ne faire que des émissions, vous voudrez peut-être faire quelque chose comme ça (bien que la logique soit plus compliquée si vous en avez besoin pour travailler avec d'autres types de messages aussi):
J'espère que cela t'aides?
la source
Je pense que cette action est appelée par
wp_transition_post_status
. Le code est:Donc, pour les futurs messages normaux, le dernier crochet sera
future_post
, mais pour votre type, ce serafuture_show
ou quel que soit votre type de slug.la source
Si tout ce que vous voulez faire est d'ajouter une date supplémentaire pour les `` heures d'affichage '', il peut être plus facile d'ajouter une méta-boîte qui fait exactement cela - l'utilisation de la date de publication pour usurper cela pourrait être potentiellement problématique, car WordPress la définira sur statut "futur" chaque fois qu'il est mis à jour avec une date de publication future (je pense), donc vous devrez vous accrocher à chaque fois qu'un article est mis à jour pour le remettre en place. De plus, de cette façon, vous pouvez réserver la «date de publication» à ce à quoi elle est destinée.
J'utiliserais probablement juste un
meta_key
, et une meta box personnalisée. Bien que cela dépend de la complexité de vos requêtes qui affichent les publications.Si vous définissez la meta_value comme horodatage, vous pouvez toujours commander par la date de l'heure d'affichage ou sélectionner avant / après une certaine date:
$events = get_posts( 'post_type=events&meta_key=show_time&meta_value=' . strtotime( '+1 week' ) . '&meta_compare=<&orderby=meta_value' );
Obtiendrait tous les «événements» avec un showtime au plus tard une semaine après la date actuelle. Remarque: ce qui précède n'est pas testé, mais devrait fonctionner :)
la source
WP Dev Nacin utilise un simple remplacement de fonction:
la source