Question

Dans une question précédente, je devais définir un futur post daté (type coutume post) tel que publié sur sauvegarde au lieu de le programmer.

A la date, il est « prévu » car je voudrais définir comme un projet nouveau. J'ai essayé de brancher dans init et l'envelopper dans un cas de vérification pour le type poste. Je pensais que ce serait comparer au temps du serveur et de l'état puis mis à projet si elle était plus âgé que le temps du serveur.

Comme une esquisse:

if custom post type
  get_the_time of post
  get the server time
  if post time is older than server time set status to draft
endif

Ici et mise à jour avec un code que je travaille avec.

function sfn_show_expire(){
    global $wpdb;
    $server_time = date('mdy');
    $result = $wpdb->get_results("SELECT * FROM wp_posts WHERE post_type = 'show' AND post_status = 'publish'");
    if( !empty($result)) foreach ($result as $a){
        $show_time = get_the_time('mdy', $a->ID );
        if ( $server_time > $show_time){
            $my_post = array();
            $my_post['ID'] = $a->ID;
            $my_post['post_status'] = 'draft';
            wp_update_post( $my_post );
        }
    } // end foreach
}
add_action( 'init', 'sfn_show_expire' );

Il est d'obtenir les messages que j'ai besoin et me donner le temps de serveur, mais ne fait rien passé que pour autant que je peux dire.

Était-ce utile?

La solution

Votre requête ne vous donne pas une pièce d'identité après, il te donne un poste entier. Le SELECT * retourne toutes les colonnes, ID, post_status, etc. Donc, la mise en $my_post['ID'] = $a ne fait rien pour vous dans ce cas.

Essayez d'utiliser: $my_post['id'] = $a->ID; à la place. Cela devrait régler avec précision votre ID avant d'appeler wp_update_post() et vous devriez être dans les affaires.

En dehors de cela, je ne vois aucun problème avec ce que vous faites ... sauf que la base de données chaque interrogation fois que le site est chargé pourrait éventuellement créer des problèmes de performance. Je mis en place un travail horaire chron au lieu d'automatiser le processus ... il ne dépend pas ou ralentir le trafic utilisateur.

Autres conseils

Je voulais faire un commentaire, mais ressemble à votre poste est fermé pour commentaires.

Quoi qu'il en soit, soyez très prudent, mon ami, de quitter la déclaration de OUTSIDE tableau de la boucle:

$my_post = array();

sinon, votre script utilisera la mémoire excessive et ne jamais finir pour grande base de données!

Permettez-moi de savoir si des questions

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top