Obtenir le contenu des articles par ID

10

Comment puis-je obtenir le contenu d'une publication par identifiant de publication? J'ai essayé get_page('ID');de montrer du contenu mais cela ne fonctionne pas.

viral m
la source
1
Downvotes car vous n'avez même pas essayé de lire les documents get_page(). Il est obsolète depuis très longtemps. En outre, il existe une quantité illimitée de ressources sur le site concernant ce problème, même Google a des tonnes d'informations à ce sujet
Pieter Goosen

Réponses:

17

Vous pouvez le faire de plusieurs façons. Voici les deux meilleures façons.

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

Une autre méthode

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

Après la suggestion de Pieter Goosen apply_filters.

Vous pouvez utiliser apply_filterssi vous souhaitez que le contenu soit filtré par d'autres plugins. Cela élimine donc la nécessité d'utiliserdo_shortcode

Exemple

$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.

Si vous ne voulez pas autoriser d'autres plugins à filtrer ce contenu et avez besoin d'une fonction de shortcode, allez-y do_shortcode.

Si vous ne voulez pas non plus de shortcode, jouez simplement avec le post_content.

WPTC-Troop
la source
Demandez-vous simplement pourquoi vous utilisezdo_shortcode
Pieter Goosen
Salut merci d'avoir demandé. @PieterGoosen Alors que nous recevons le raw contentmessage. Tout shortcode intégré dans la publication ne sera pas traité. donc nous le faisons nousdo_shortcode
mêmes
2
Une meilleure façon serait d'utiliser apply_filters( 'the_content', $content );, de cette façon, tous les filtres qui sont appliqués à the_content()aimer wpautopet le gestionnaire de shortcode, est appliqué à $content. ;-). Notez le plurielfilters
Pieter Goosen
1
Oui, utiliser apply_filtersau lieu de do_shortcodedonner un sens. Mais l'utilisation apply_filterest uniquement basée sur leur décision environnementale. Permettez-moi également de mettre à jour ma réponse. Merci beaucoup pour vos soins sur la communauté @PieterGoosen
WPTC-Troop
0

Je vais juste laisser ici une autre façon laide et hacky que vous pouvez trouver utile parfois. Bien sûr, les méthodes qui utilisent des appels API sont toujours préférées (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
    )
);
DrLightman
la source
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);
Dharmishtha Patel
la source
1
Veuillez modifier votre réponse et ajouter une explication: pourquoi cela pourrait-il résoudre le problème?
fuxia
-1

En utilisant get_page('ID').

$page_id = 123;  //Page ID
$page_data = get_page($page_id); 
$title = $page_data->post_title; 
$content = $page_data->post_content;
etest
la source
1
Voté car vous n'avez même pas essayé de lire la documentation. get_page()est déprécié
Pieter Goosen