web-dev-qa-db-fra.com

Différence entre the_content () et get_post ()?

Je travaille sur le peaufinage d'un thème et j'ai besoin d'exploser le contenu du message pour supprimer du texte. Le code suivant correspond à ce que j'utilise:

$custom_Get_Post_Title = explode('|',get_post()->post_content);
echo "<h4>" . $custom_Get_Post_Title[0] . "</h4>";              
echo "<p>" . $custom_Get_Post_Title[1] . "</p>";

À l'origine, le développeur utilisait le code suivant pour afficher le contenu de la publication, mais cela rendait la tâche difficile pour moi d'exploser les données.

global $post;
setup_postdata($post);
the_content();

MA QUESTION : Quelle est la différence entre ces deux méthodes qui permettent de récupérer le contenu de la publication?

2
thatsgreyt

post_content est un propriété du WP_Post objet. WP_Post est un objet représentant les données de publication de la base de données. Donc, post_content contient le contenu brut stocké dans la base de données.

the_content() est une balise de modèle qui affiche le contenu de la publication en cours. La "publication en cours" correspond à la valeur de la variable globale $post au moment de l'exécution de la fonction. La variable globale $post est normalement définie dans La boucle avec while( have_posts() ) : the_post();.

La différence cruciale est que the_content() exécute le contenu brut à travers plusieurs filtres qui le préparent pour l'affichage. Celles-ci ajoutent des balises de paragraphe, convertissent des URL en éléments incorporés pour des vidéos, et des symboles tels que des guillemets en guillemets intelligents, etc. De nombreux plug-ins utilisent également ce filtre pour ajouter des éléments tels que les boutons de partage.

Donc, si vous faites simplement écho au post_content, cela ne semblera probablement pas correct. Vous pouvez reproduire la sortie de the_content() sur des données brutes en appliquant manuellement le filtre the_content. Donc, dans votre exemple, vous feriez:

$post = get_post();

$split_content = explode( '|', $post->post_content );

echo '<h4>' . $split_content[0] . '</h4>';              
echo apply_filters( 'the_content', $split_content[1] );
4
Jacob Peattie

get_post() est identique à global $post

des fonctions telles que the_content() ne peuvent être utilisées qu'à l'intérieur d'une boucle.

la fonction setup_postdata() peut être utilisée pour rendre ces fonctions disponibles.

Votre meilleur exemple pourrait être réécrit comme suit:

gloabl $post;
$custom_Get_Post_Title = explode('|',$post->post_content);

ou vous pouvez faire quelque chose de similaire avec l'exemple du bas:

global $post;
// setup_postdata($post); <- not really needed
$theContent = get_the_content($post->ID); // can used post-id to retrieve specific
$custom_Get_Post_Title = explode('|',get_post()->post_content);
3
admcfajn