web-dev-qa-db-fra.com

Obtenir le post_id d'un nouveau post

Il existe plusieurs manières d'obtenir l'identifiant d'une publication après son enregistrement (auto, etc.), mais existe-t-il un moyen d'obtenir l'identifiant de la publication immédiatement après la création d'une nouvelle publication?

J'essaie de créer un répertoire à l'aide de l'identifiant de publication, mais je n'arrive pas à obtenir un identifiant de publication statique.

le code ci-dessous semble fonctionner, mais je reçois un identifiant automatiquement incrémenté chaque fois que le nouveau post auto enregistre le brouillon. Je reçois continuellement un nouveau numéro.

function myfunction( $id ) {
        if (!file_exists("/www/foo/blog/wp-content/uploads/" . $id)) {
            mkdir("/www/foo/blog/wp-content/uploads/" . $id, 0777);
        }
}
add_action('save_post', 'myfunction');

Je voudrais obtenir le post-id qu'il sera enregistré sous. WP a-t-il une méthode pour déterminer cela correctement? Ou le projet de sauvegarde automatique enregistre-t-il chaque minute en incrémentant l'identifiant jusqu'à ce que le bouton "Publier" soit cliqué?

pensées?

à votre santé! bo

2
roberthuttinger

Essaye ça...

add_action('post_updated', 'myfunction');

function myfunction( $post_id ) {

    global $post;

        if (!file_exists("/www/foo/blog/wp-content/uploads/" . $post_id)) {
            mkdir("/www/foo/blog/wp-content/uploads/" . $post_id, 0777);
        }
}

NOTE: Changez de save_posts en post_updated pour arrêter le problème en double car il se déclenche le "Publier" seulement et pas à chaque fois que vous frappez add new ou update etc.

NOTE: J'ai vérifié cela pour vous en testant l'extrait ci-dessus - tout va bien.

REMARQUE: Vous pouvez également utiliser (wp_upload_dir() . $post_id, 0777) si vous voulez un chemin plus facilement transportable ou si vous développez un plugin ou un thème pour un usage public.

8
userabuser