web-dev-qa-db-fra.com

Utiliser le contenu en dehors de la boucle

J'essayais d'obtenir 100 premiers mots du contenu dans l'en-tête et j'utilise l'extrait de code suivant pour obtenir les 100 premiers mots de la boucle, mais est-il possible d'obtenir la valeur en dehors de la boucle:

$cstring = get_the_content( '' );
$newcString = substr( $cstring, 0, 100 );
echo'<p>' . $newcString . '</p>';
2
Hardeep Asrani

Si vous essayez de le faire pour la page en cours, vous pouvez simplement utiliser ceci:

global $post;
$content = $post->post_content;`

Cela permettra d'obtenir le contenu de la publication en cours au lieu d'avoir à définir spécifiquement l'ID.

5
Nick Young

J'ai écrit un article sur this here , mais voici un résumé des points:

  • the_content ne peut être utilisé que dans la boucle
  • 'dans la boucle' ne peut être simulé correctement qu'en appelant setup_postdata() et global $post.
  • Vous devez ensuite nettoyer après vous-même en appelant wp_reset_postdata().

Le code ci-dessous fournit une fonction permettant de récupérer le contenu d'un message à partir de son identifiant. Il diffère de @NickYoung answer en ce que le contenu que vous recevez est not ce qui est stocké dans la colonne post_content de la table posts, mais plutôt que le contenu après il est passé par the_content filtre (par exemple, codes courts analysés, etc.).

Le code

/**
 * Display the post content. Optinally allows post ID to be passed
 * @uses the_content()
 * @link http://stephenharris.info/get-post-content-by-id/
 * @link https://wordpress.stackexchange.com/questions/142957/use-the-content-outside-the-loop
 * @param int $id Optional. Post ID.
 * @param string $more_link_text Optional. Content for when there is more text.
 * @param bool $stripteaser Optional. Strip teaser content before the more text. Default is false.
 */
function sh_the_content_by_id( $post_id=0, $more_link_text = null, $stripteaser = false ){
    global $post;
    $post = get_post($post_id);
    setup_postdata( $post, $more_link_text, $stripteaser );
    the_content();
    wp_reset_postdata( $post );
}
5
Stephen Harris

Vous pouvez utiliser get_page () ou get_post () pour extraire le contenu de la boucle

//For page
$page_id = 1;
$get_page_object = get_page( $page_id );
$page_object = $get_page_object->post_content;
echo $newpagecString = substr($page_object, 0, 100);
//For post
$post_id = 2;
$get_post_object = get_post( $post_id );
$post_object = $get_post_object->post_content;
echo $newpostcString = substr($post_object, 0, 100);
0
Maidul