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?
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] );
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);