Come ottenere la data di creazione di un post?

4 feb 2015, 14:33:57
Visualizzazioni: 29.6K
Voti: 11

Suppongo di dover ottenere la prima revisione di un particolare post e recuperarne la data, giusto?

Come si fa?

9
Commenti

Il post_date e post_date_gmt rappresentano la data in cui il post è stato creato.

Pieter Goosen Pieter Goosen
4 feb 2015 14:41:39

Grazie Pieter, ma sembra che entrambi mi diano la data dell'ultima modifica. Sei sicuro?

Max Max
4 feb 2015 14:44:22

Allora hai un filtro personalizzato o una funzione che sta modificando le date dei tuoi post. Se un post viene modificato, quella data e ora specifica viene salvata come post_modified

Pieter Goosen Pieter Goosen
4 feb 2015 14:46:57

Mi dispiace, ma penso che sia sbagliato, almeno per i post programmati: post_date è la data programmata. E non c'è un filtro, interrogo direttamente il database e ottengo il post poi chiamo ->post_date. Qualche idea per ottenere la prima volta in cui il post è stato aggiunto a WordPress?

Max Max
4 feb 2015 14:58:10

L'ho appena testato: recupero post_date da un post programmato, mi dà la data programmata. Non è lo stesso per te?

Max Max
4 feb 2015 15:20:33

Penso di aver trovato quello che mi serviva (anche se non ne sono totalmente sicuro al momento): get_the_time( $date_format, $new_post );

Max Max
4 feb 2015 15:45:46

a proposito, non stavo cercando la data di pubblicazione, ma la data di creazione, la prima volta che un utente ha creato il post in WordPress

Max Max
4 feb 2015 15:47:35

Ops, non funziona, è ancora la data di pubblicazione, o quella programmata se il post è schedulato... Strano!

Max Max
4 feb 2015 15:55:59

Cosa hai già codificato da solo? Inoltre, la tua domanda non è chiara.

Brad Dalton Brad Dalton
4 feb 2015 20:00:32
Mostra i restanti 4 commenti
Tutte le risposte alla domanda 5
4
10

Il post_date e post_date_gmt servono come data in cui il post è stato creato. Per i post programmati, questa sarà la data in cui il post è schedulato per essere pubblicato.

Non esiste un metodo nativo affidabile per determinare la data in cui un post programmato è stato aggiunto. Per i post programmati, puoi provare a utilizzare le date post_modified o post_modified_gmt poiché corrisponderanno al momento in cui il post è stato aggiunto per la prima volta. Tuttavia, devi ricordare che questo metodo non è affidabile perché questa data cambierà quando il post viene modificato.

Un altro metodo (anch'esso non affidabile) è utilizzare le revisioni. Se hai le revisioni abilitate, quando un post viene programmato o pubblicato, viene salvata una revisione del post. Questa revisione, che verrà salvata dopo il post programmato quando viene cliccato il pulsante di programmazione, conterrà la data corrente in cui viene cliccato il pulsante di programmazione. Guarda l'immagine qui sotto

Data di programmazione del post in WordPress

Se hai bisogno di un metodo affidabile per ottenere questa informazione, dovrai scrivere una funzione personalizzata per salvare l'ora esatta in cui viene cliccato il pulsante di programmazione per schedulare un post.

4 feb 2015 19:55:23
Commenti

Grazie, ma è strano che non esista una funzione del genere

Max Max
27 feb 2015 11:32:17

È davvero necessaria una funzione del genere? Il tuo caso è molto isolato

Pieter Goosen Pieter Goosen
27 feb 2015 11:41:17

Non credo che il caso sia così isolato, specialmente ora che c'è woocommerce e si vuole differenziare in base all'età dei prodotti

Kirby Kirby
15 lug 2015 23:05:19

@Kirby per favore spiega in una risposta

Pieter Goosen Pieter Goosen
15 lug 2015 23:34:18
1

Anch'io avevo bisogno delle stesse informazioni e ho risolto da solo. Devi creare una query personalizzata per ottenere la prima data _wp_old_date dalla tabella postmeta come suggerito da @dipak_pusti. Esegui la seguente istruzione:

global $wpdb;
$post_id = 1234;
$meta_key = '_wp_old_date';
$post_create_date = $wpdb->get_var( $wpdb->prepare(
    "
        SELECT MIN($wpdb->postmeta.meta_value) as post_create_date
        FROM $wpdb->postmeta
        WHERE $wpdb->postmeta.post_id = %d
            AND $wpdb->postmeta.meta_key = %s
    ",
    $post_id,
    $meta_key
) );

if(is_null($post_create_date)) {
    $post_create_date = get_the_date('Y-m-d', $post_id);
}

echo "<p>La data di creazione del post è: {$post_create_date}</p>";

Nota: Se _wp_old_date è NULL (significa che la data di pubblicazione non è mai stata modificata) puoi usare la data da get_the_date('Y-m-d', $post_id).

25 gen 2019 19:26:44
Commenti

Credo che questo possa essere semplificato chiamando get_post_meta( $post_id, '_wp_old_date' );, assicurandosi di non passare un valore true come terzo parametro. Il risultato sarà un array di valori da verificare, evitando la necessità di una query SQL. Come bonus, utilizza la cache di WP quindi se hai già un oggetto post non verranno effettuate query aggiuntive

Tom J Nowell Tom J Nowell
31 ott 2019 00:06:09
0

Utilizza get_the_date(); per ottenere la data definita nel meta box "Pubblica" nel campo "Pubblicato il..", questa è solitamente la data in cui l'utente ha creato l'articolo a meno che non l'abbia modificata.

4 feb 2015 16:59:25
0

Quando mi sono trovato bloccato con un caso simile al tuo, ho trovato una meta chiave _wp_old_date con un meta valore che rappresentava una data.

Cercando su Google, ho scoperto che viene utilizzata una funzione per memorizzare il vecchio valore quando un Post o un Oggetto viene modificato.

https://wpseek.com/function/wp_check_for_changed_dates/

Lo so, questa è una risposta molto tardiva, ma potrebbe aiutare altri in futuro. :)

1 ago 2018 14:45:54
0

Ho scritto una query basata sulle altre risposte.

SELECT p.post_title, 
       (SELECT Min(postmeta.meta_value) 
        FROM   wp_postmeta postmeta 
        WHERE  postmeta.post_id = p.id 
               AND postmeta.meta_key = '_wp_old_date') 
       "Prima pubblicazione da postmeta", 
       DATE(revisions.min_post_modified) 
       "Prima modifica trovata nelle revisioni", 
       DATE(revisions.min_post_date)                   min_post_date 
FROM   wp_posts p, 
       (SELECT post_parent, 
               Min(pr.post_modified) min_post_modified, 
               Min(pr.post_date)     min_post_date 
        FROM   wp_posts pr 
        GROUP  BY pr.post_parent) revisions 
WHERE  p.id = revisions.post_parent 
31 ott 2019 20:23:26