it-swarm.com.de

Unterschied zwischen the_content () und get_post ()?

Ich arbeite an der Optimierung eines Themas und muss den Inhalt des Posts auflösen, um Text zu entfernen. Den folgenden Code verwende ich:

$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>";

Ursprünglich benutzte der Entwickler den folgenden Code, um den Inhalt des Posts anzuzeigen, aber es machte mir schwer, die Daten zu zerlegen.

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

MEINE FRAGE : Was ist der Unterschied zwischen diesen beiden Methoden, die beide den Post-Inhalt abrufen?

2
thatsgreyt

post_content ist eine Eigenschaft des WP_Post Objekts. WP_Post ist ein Objekt, das die Post-Daten aus der Datenbank darstellt. post_content enthält also den Rohinhalt, wie er in der Datenbank gespeichert ist.

the_content() ist ein Template-Tag, das den Inhalt des aktuellen Beitrags anzeigt. Der 'aktuelle Beitrag' ist unabhängig davon, auf welchen Wert die globale $post-Variable zum Zeitpunkt der Ausführung der Funktion eingestellt ist. Die globale Variable $post wird normalerweise in The Loop with while( have_posts() ) : the_post(); gesetzt.

Der entscheidende Unterschied ist, dass the_content() den Rohinhalt durch mehrere Filter laufen lässt, die ihn für die Anzeige vorbereiten. Dazu gehören das Hinzufügen von Absatz-Tags, das Konvertieren von URLs in Einbettungen für Videos und das Konvertieren von Symbolen wie Anführungszeichen in intelligente Anführungszeichen usw. Viele Plug-ins verwenden diesen Filter auch, um beispielsweise Schaltflächen zum Teilen hinzuzufügen.

Wenn Sie also nur den post_content ausgeben, wird er wahrscheinlich nicht richtig aussehen. Sie können die Ausgabe von the_content() für Rohdaten nachahmen, indem Sie den the_content-Filter manuell anwenden. In Ihrem Beispiel würden Sie also Folgendes tun:

$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() ist dasselbe wie global $post

funktionen wie the_content() können nur innerhalb einer Schleife verwendet werden.

mit der Funktion setup_postdata() können diese Funktionen verfügbar gemacht werden.

Ihr Top-Beispiel könnte wie folgt umgeschrieben werden:

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

oder Sie könnten etwas Ähnliches mit dem unteren Beispiel tun:

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