Uzyskaj treść postu według identyfikatora


10

Jak mogę uzyskać treść posta według identyfikatora postu? Próbowałem get_page('ID');wyświetlić zawartość, ale to nie działa.


1
Przegłosuj, bo nawet nie próbowałeś czytać dokumentów get_page(). To było przestarzałe bardzo dawno temu. Ponadto na stronie jest nieograniczona ilość zasobów dotyczących tego problemu, nawet Google ma mnóstwo informacji na ten temat
Pieter Goosen

Odpowiedzi:


17

Możesz to zrobić na wiele sposobów. Oto dwa najlepsze sposoby.

$post_id = 5// example post id
$post_content = get_post($post_id);
$content = $post_content->post_content;
echo do_shortcode( $content );//executing shortcodes

Inna metoda

$content = get_post_field('post_content', $post_id);
echo do_shortcode( $content );//executing shortcodes

Po sugestii Pietera Goosena na temat apply_filters.

Możesz użyć, apply_filtersjeśli chcesz, aby zawartość była filtrowana przez inne wtyczki. Eliminuje to więc potrzebę użyciado_shortcode

Przykład

$post_id = 5// example post id
$post_content = get_post($post_id);
$content = $post_content->post_content;
echo apply_filters('the_content',$content);
 //no need to use do_shortcode, but content might be filtered by other plugins.

Jeśli nie chcesz zezwalać innym wtyczkom na filtrowanie tej zawartości i potrzebujesz funkcji shortcode, skorzystaj z do_shortcode.

Jeśli nie chcesz też shortcode, po prostu graj z post_content.


Zastanawiam się, dlaczego używaszdo_shortcode
Pieter Goosen

Cześć dzięki za pytanie. @PieterGoosen Jak otrzymujemy raw contentpost. Wszelkie krótkie kody osadzone w poście nie będą przetwarzane. więc robimy to sami zdo_shortcode
WPTC-Troop

2
Lepszym sposobem byłoby wykorzystanie apply_filters( 'the_content', $content );, w ten sposób, wszystkie filtry, które są stosowane w celu the_content()jak wpautopi obsługi shortcode, nanosi się $content. ;-). Zwróć uwagę na liczbę mnogąfilters
Pieter Goosen

1
Tak, używanie apply_filterszamiast do_shortcodesensu. Ale używanie apply_filteropiera się wyłącznie na ich decyzji dotyczącej środowiska. Pozwól, że zaktualizuję również moją odpowiedź. Bardzo dziękuję za opiekę w społeczności @PieterGoosen
WPTC-Troop

0

Zostawię tutaj kolejny cholernie brzydki sposób, który może ci się przydać. Oczywiście zawsze preferowane są metody wykorzystujące wywołania API (get_post (), get_the_content (), ...).

global $wpdb;
$post_id = 123; // fill in your desired post ID
$post_content_raw = $wpdb->get_var(
    $wpdb->prepare(
        "select post_content from $wpdb->posts where ID = %d",
        $post_id
    )
);

0
$id = 23; // add the ID of the page where the zero is
$p = get_page($id);
$t = $p->post_title;
echo '<h3>'.apply_filters('post_title', $t).'</h3>'; // the title is here wrapped with h3
echo apply_filters('the_content', $p->post_content);

1
Proszę edytować swoje odpowiedzi i dodać wyjaśnienie: dlaczego to może rozwiązać problem?
fuxia

-1

Za pomocą get_page('ID').

$page_id = 123;  //Page ID
$page_data = get_page($page_id); 
$title = $page_data->post_title; 
$content = $page_data->post_content;

1
Zagłosowano, ponieważ tak naprawdę nie próbowałeś nawet przeczytać dokumentacji. get_page()jest amortyzowany
Pieter Goosen
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.