Ordnungsgemäße Methode zum Ersetzen des_contents nur für Seiten, die mit einem benutzerdefinierten Plugin erstellt wurden

Ich erstelle ein Plugin, das den the_content von nur zwei bestimmten Seiten ersetzen the_content , die bei der Aktivierung erstellt wurden.

Hier ist mein Code:

 add_filter('the_content', 'emd_content'); function emd_content() { if ( is_page('Member Directory') ) { include dirname( __FILE__ ) . '/content-members.php'; } elseif ( is_page('Contact Members') ) { include dirname( __FILE__ ) . '/content-member-contact-form.php'; } else { the_content(); } } 

Der obige Code gibt mir einen 500 Internal Server Error für andere Seiten als Member Directory und Contact Members , die beide ordnungsgemäß funktionieren.

Wenn ich else { the_content(); } entferne else { the_content(); } else { the_content(); } , dann funktionieren die Member Directory und Contact Members korrekt, aber alle anderen Seiten zeigen nichts an, wo the_content angezeigt werden sollte.

Ich habe auch versucht, die add_filter() innerhalb von if(is_page('Member Directory') || is_page('Contact Members')) { } . the_content funktionierte für andere Seiten, aber nicht für die beiden, die vom Plugin erstellt wurden.

Was ist ein besserer Weg, um den the_content für diese beiden Seiten mit meinem Plugin zu ersetzen?

Solutions Collecting From Web of "Ordnungsgemäße Methode zum Ersetzen des_contents nur für Seiten, die mit einem benutzerdefinierten Plugin erstellt wurden"

Sie müssen den gefilterten Inhalt zurückgeben, versuchen Sie es wie folgt:

 add_filter('the_content', 'emd_content'); function emd_content( $content ) { if ( is_page('Member Directory') ) { include dirname( __FILE__ ) . '/content-members.php'; } elseif ( is_page('Contact Members') ) { include dirname( __FILE__ ) . '/content-member-contact-form.php'; } else { return $content; } } 

Besser ist es jedoch, eine benutzerdefinierte Seitenvorlage für diese Seiten zu verwenden.

Ashoks Antwort funktioniert, aber ich habe auch folgendes gefunden, und genau das habe ich beschlossen.

the_content() gesagt, ein filter muss immer einen Wert zurückgeben – the_content() nur Echos und verursacht wahrscheinlich eine Endlosschleife, da es Ihren Filter aufrufen würde.

 function emd_content($content) { if ( is_page('Member Directory') ) { $content = include dirname( __FILE__ ) . '/content-members.php'; } elseif ( is_page('Contact Members') ) { $content = include dirname( __FILE__ ) . '/content-member-contact-form.php'; } else { $content = $content; } return $content; }