Cum să obții data creării unei postări?

4 feb. 2015, 14:33:57
Vizualizări: 29.6K
Voturi: 11

Presupun că trebuie să obțin prima revizie a unei anumite postări și să iau data, corect?

Cum se face asta?

9
Comentarii

post_date și post_date_gmt reprezintă data la care articolul a fost creat inițial.

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

Mulțumesc Pieter, dar se pare că ambele îmi afișează data ultimei modificări. Ești sigur?

Max Max
4 feb. 2015 14:44:22

Atunci ai un filtru personalizat sau o funcție care modifică datele articolelor tale. Dacă un articol este modificat, acea dată și oră specifică sunt salvate în post_modified

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

Îmi pare rău, dar cred că este greșit, cel puțin pentru postările programate: post_date este data programată. Și nu există niciun filtru, interoghez direct baza de date și obțin postarea, apoi apelez ->post_date. Ai vreo idee pentru a obține momentul exact în care postarea a fost adăugată prima dată în WordPress?

Max Max
4 feb. 2015 14:58:10

Tocmai am testat: am preluat post_date dintr-o postare programată și mi-a returnat data programată. La tine nu e la fel?

Max Max
4 feb. 2015 15:20:33

Cred că am găsit ce aveam nevoie (deși nu sunt încă total sigur): get_the_time( $date_format, $new_post );

Max Max
4 feb. 2015 15:45:46

apropo, nu căutam data publicării, ci data creării, prima dată când un utilizator a creat postul în WordPress

Max Max
4 feb. 2015 15:47:35

Hopa, nu funcționează, încă este data publicării, sau data programată dacă postul este programat.... Ciudat!

Max Max
4 feb. 2015 15:55:59

Ce ai codat până acum? De asemenea, întrebarea ta nu este clară.

Brad Dalton Brad Dalton
4 feb. 2015 20:00:32
Arată celelalte 4 comentarii
Toate răspunsurile la întrebare 5
4
10

Campurile post_date și post_date_gmt servesc drept data la care articolul a fost creat. Pentru articolele programate, aceasta va fi data la care articolul este programat să fie publicat.

Nu există o metodă nativă fiabilă pentru a determina data la care un articol programat a fost adăugat. Pentru articolele programate, puteți încerca să utilizați datele post_modified sau post_modified_gmt, deoarece acestea vor corespunde momentului în care articolul a fost adăugat inițial. Trebuie să țineți cont că această metodă nu este fiabilă, deoarece data se va schimba atunci când articolul este modificat.

O altă metodă (de asemenea, nefiabilă) este utilizarea reviziilor. Dacă aveți reviziile activate, atunci când un articol este programat sau publicat, o revizie a articolului este salvată. Acea revizie, care va fi salvată după ce articolul este programat când butonul de programare este apăsat, va conține data curentă la care butonul de programare a fost apăsat. Verificați imaginea de mai jos.

Previzualizare revizie articol programat

Dacă aveți nevoie de o metodă fiabilă pentru a face acest lucru, va trebui să scrieți propria funcție personalizată pentru a salva momentul exact în care butonul de programare a fost apăsat pentru a programa un articol.

4 feb. 2015 19:55:23
Comentarii

Mulțumesc, dar este ciudat că nu există o astfel de funcție

Max Max
27 feb. 2015 11:32:17

Este cu adevărat necesară o astfel de funcție? Cazul tău este foarte izolat

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

Nu cred că cazul este foarte izolat, mai ales acum că woocommerce este în discuție și doriți să diferențiați între vârsta produselor

Kirby Kirby
15 iul. 2015 23:05:19

@Kirby te rog să explici într-un răspuns

Pieter Goosen Pieter Goosen
15 iul. 2015 23:34:18
1

Aveam nevoie de aceeași informație și tocmai am aflat singur. Trebuie să faci o interogare personalizată pentru a obține prima dată _wp_old_date din tabelul postmeta, așa cum a sugerat @dipak_pusti. Rulează următoarea declarație:

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>Data creării postării este: {$post_create_date}</p>";

Notă: Dacă _wp_old_date este NULL (acest lucru înseamnă că data publicării nu a fost niciodată schimbată) poți folosi data din get_the_date('Y-m-d', $post_id).

25 ian. 2019 19:26:44
Comentarii

Cred că aceasta poate fi simplificată prin apelarea get_post_meta( $post_id, '_wp_old_date' );, asigurându-mă că nu trece o valoare true ca al treilea parametru. Rezultatul va fi un tablou de valori de verificat, evitând necesitatea unei interogări SQL. Ca bonus, utilizează WP Cache, deci dacă deja aveți un obiect post, nu se vor face nicio interogare suplimentară

Tom J Nowell Tom J Nowell
31 oct. 2019 00:06:09
0

Folosește get_the_date(); pentru a obține data definită în căsuța meta „Publicare” în câmpul „Publicat pe ..”, aceasta fiind de obicei data în care utilizatorul a creat articolul, cu excepția cazului în care acesta a modificat-o.

4 feb. 2015 16:59:25
0

Când m-am confruntat cu un caz similar cu al tău, am descoperit o cheie meta _wp_old_date cu o valoare meta care reprezintă o dată.

Am căutat pe Google și am aflat că această funcție este folosită pentru a stoca valoarea veche atunci când un Post sau Obiect este modificat.

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

Știu că acesta este un răspuns foarte tardiv, dar poate ajuta pe alții în viitor. :)

1 aug. 2018 14:45:54
0

Am scris o interogare bazată pe celelalte răspunsuri.

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 publicare din postmeta", 
       DATE(revisions.min_post_modified) 
       "Prima editare găsită în revizii", 
       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 oct. 2019 20:23:26