Drucken Sie den Seiteninhalt mit Formatierung, wenn Sie eine benutzerdefinierte SQL-Abfrage durchführen

Ich denke, es gibt eine einfache Lösung dafür, konnte aber keine finden.

Ich versuche 3 Seiten zu holen und zeige sie in der Fußzeile. Das Problem ist, dass jede Seite als Text ohne Formatierung angezeigt wird, was bedeutet, dass Shortcodes auch als Text gedruckt werden .

Hier ist der Code, den ich verwende:

global $wpdb; $sql = "SELECT post_title, post_content FROM ..."; $footerElements = $wpdb->get_results( $sql ); foreach ( $footerElements as $footerElement ) { echo '
'; echo '
' . $footerElement->post_title . '
'; echo $footerElement->post_content; echo '
'; }

Der Grund, warum ich SQL und nicht WP_Query ist ein Plugin mit pre_get_posts das pre_get_posts explizit einstellt (ausgenommen page ), wenn eine Kategorie oder eine Tag-Seite angezeigt wird. Daher kann ich WP_Query nicht dafür verwenden.

Solutions Collecting From Web of "Drucken Sie den Seiteninhalt mit Formatierung, wenn Sie eine benutzerdefinierte SQL-Abfrage durchführen"

Sie müssen die post_content Filter post_content . Es ist eine Ein-Zeilen-Änderung von Ihrem aktuellen Code.

Dies…

 echo $footerElement->post_content; 

… sollte sein …

 echo apply_filters('the_content',$footerElement->post_content); 

Dadurch erhalten Sie die gleiche Formatierung wie bei normalen Posts.

Sie können natürlich auswählen, welche Filter Sie ausführen möchten, anstatt sie alle auszuführen, und Sie können dies tun, falls ein Plugin dem Post-Inhalt über einen Filter etwas hinzufügt (zum Beispiel eine G + Schaltfläche). Sehen Sie sich die Standardfilter für the_content und überprüfen Sie den the_content für die functionen der verschiedenen callbacke.

Um diese letzte Idee zu erläutern, sind Filterrückrufe im Grunde genommen functionen, die eine Eingabe nehmen und eine (gewöhnlich) modifizierte Version dieser Eingabe zurückgeben. Das bedeutet, dass Sie sie bei Bedarf direkt anrufen können. Sie sind functionen wie jede andere. Beispielsweise…

Nimm diesen Filter von default-filters.php :

 add_filter( 'the_content', 'wptexturize' ); 

Die Callback-function ist wptexturize . Wenn Sie diesen “Filter” ausführen und nur diesen Filter schreiben möchten:

 echo wptexturize($footerElement->post_content); 

Ich kann nicht schwören, dass das mit jedem Filter funktioniert, da manchmal Leute komische Dinge mit Filtern machen, aber es sollte mit den meisten funktionieren – besonders den corefiltern.

Sie können auch bestimmte Filter entfernen, wenn Sie wissen, welche nicht ausgeführt werden sollen. Es könnte einfacher sein, als diejenigen zu tippen, die Sie ausführen möchten.

 remove_filter( 'the_content', 'wptexturize' ); // some code maybe echo apply_filters('the_content',$footerElement->post_content); // more code maybe // add the filter back in case it is used later in the page add_filter('the_content','wptexturize');