Cum să obții ID-ul postării cu funcția Add Filter în WordPress

5 mai 2012, 09:26:14
Vizualizări: 14.2K
Voturi: 4

Scriu un plugin și încerc să aflu cum să adaug date la sfârșitul unei postări bazate pe unele informații Meta Personalizate.

Până acum am făcut asta:

add_filter('the_content', 'AppendMeta');

Și aici este funcția "AppendMeta"

AppendMeta($content) {
    echo $content; // Afișează conținutul postării
    $PersonName = get_post_meta($post->ID, 'PersonName', true);
    echo 'Persoana: ' . $PersonName;
}

Acest cod funcționează dacă înlocuiesc $post->ID cu ID-ul postării, dar am nevoie să funcționeze bazat pe postarea pe care o vizitează utilizatorul. Cum pot să transmit ID-ul postării ca parametru? $post->ID nu funcționează în acest scenariu și nu înțeleg de ce.

3
Comentarii

Notă rapidă: când te conectezi la un cârlig de filtrare, funcția ta ar trebui să returneze variabila filtrată în loc să o afișeze.

Bainternet Bainternet
5 mai 2012 13:24:17

Este o convenție sau există un motiv pentru asta?

Talon Talon
5 mai 2012 19:52:09

este o convenție cu un motiv, cârligele de filtrare îți permit să modifici o valoare și se așteaptă ca acea valoare să fie returnată, așa funcționează ele.

Bainternet Bainternet
6 mai 2012 12:54:07
Toate răspunsurile la întrebare 2
2
10

Nu-i nimic, am aflat că pot folosi get_the_ID();.

Această funcție va returna ID-ul postului în interiorul filtrului the_content. Funcția pur și simplu declară obiectul global $post și returnează ID-ul său.

add_filter('the_content', 'wpse51205_content')
wpse51205_content($content) {
    echo $content; // Afișează conținutul postului
    $PersonName = get_post_meta(get_the_ID(), 'PersonName', true);
    echo 'Persoană: ' . $PersonName;
}

Dacă nu doriți să folosiți get_the_ID(), trebuie doar să declarați obiectul $post ca global înainte de a-l folosi:

add_filter('the_content', 'wpse51205_content')
wpse51205_content($content) {
    global $post;
    echo $content; // Afișează conținutul postului
    $PersonName = get_post_meta($post->ID), 'PersonName', true);
    echo 'Persoană: ' . $PersonName;
}
5 mai 2012 09:28:11
Comentarii

Ah, da, bine de știut, probabil mai sigur așa.

Talon Talon
5 mai 2012 19:51:18

get_the_ID() este încă destinat să fie folosit doar în interiorul buclei. S-ar putea să funcționeze bine pentru tine pe paginile individuale, dar o metodă complet sigură este să accesezi doar variabila global $post, așa cum am menționat în răspunsul meu.

Ashfame Ashfame
6 mai 2012 09:48:08
1

the_ID() ar trebui să fie utilizată doar în interiorul buclei, altfel nu poți conta pe ea. Este mai bine să folosești obiectul $GLOBALS['post'] în apelul funcției tale.

5 mai 2012 09:59:02
Comentarii

the_ID() se bazează și pe variabila globală $post.

DrLightman DrLightman
25 feb. 2020 13:19:10