Angepasste Inhalt statt Post-Inhalt anzeigen

Plugin erlauben, ein benutzerdefiniertes Feld in Post / Seite hinzuzufügen.

In post / page erstelle ich ein benutzerdefiniertes Feld, so dass der Benutzer den Inhalt für dieses Feld eingeben kann.

Und wenn Benutzereingaben in dieses Feld eingegeben werden, zeigt der Post / die Seite diesen Inhalt auf dem Bildschirm an, statt dessen den Hauptinhalt, der über den Post / Seiteneditor eingegeben wird.

Kann mir jemand sagen, wie man das macht?

Es ist ein Plugin, also kann ich die Vorlage nicht bearbeiten.

Ich habe versucht mit add_filter -> the_content, aber es scheint nur für Post-Typ gelten, wie es funktioniert mit beiden Post / Seitentyp?

add_meta_box( 'st-page-builder', // Unique ID esc_html__( 'Page Builder', 'page-builder' ), // Title 'pageBuilderCallBack', // Callback function 'post', // Admin page (or post type) 'advanced', // Context 'default' // Priority ); function pageBuilderCallBack($object, $box) { wp_nonce_field( basename( __FILE__ ), 'page-builder-nonce' ); $page = get_post_meta($object->ID, 'page_builder', true); require_once 'form-input.php'; } function displayCustomContent() { // how to replace main post content with custom content ? if (is_page() || is_single()) { global $post; $pageBuilderContent = trim(get_post_meta($post->ID, 'page_builder', TRUE)); if ($pageBuilderContent) { return $pageBuilderContent; } } return $content; } add_filter('the_content', 'displayCustomContent'); 

Solutions Collecting From Web of "Angepasste Inhalt statt Post-Inhalt anzeigen"

Sie müssen nur nach diesem benutzerdefinierten Feld suchen und dieses anstelle des Post-Inhalts zurückgeben.

 function displayCustomContent() { if (!is_front_page()) return $content; // how to replace main post content with custom content ? global $post; $special_content = get_post_meta($post->ID,'page_builder',true); if (!empty($special_content)) { // remove_all_filters('the_content'); return $special_content; } return $content; } 

Die einzige andere Sache, die Sie vielleicht tun möchten, ist Ihren Filter zuerst zu laufen …

 add_filter('the_content', 'displayCustomContent', 1); 

… und remove_all_filters('the_content'); innerhalb der callbackfunktion. Dies sollte unnötigen Overhead reduzieren und außerdem verhindern, dass andere Inhaltsfilter Ihren Inhalt verändern.