Wie erstelle ich ein wiederverwendbares Inhalts-Snippet, dem ich einen Wert übergeben kann?

Hier ist das Szenario …

Für eine lokale Seite habe ich verschiedene stadtspezifische Seiten. Der erste Absatz dieser Seiten ist einzigartig und bezieht sich auf die jeweilige Stadt. Aber der Inhalt danach wird der gleiche sein mit Ausnahme der Stadtnamen …

Also, was ich tun möchte, ist ein Content-Snippet, das den Inhalt enthält, der für jede Stadt derselbe ist. ABER ich muss in der Lage sein, dem Content-Snippet einen Wert zu geben (die Stadtnamen).

Wenn mein Inhalts-Snippet beispielsweise den folgenden Text enthält: “CITYNAME ist eine schöne Stadt”, sollte CITYNAME durch den Wert ersetzt werden, den ich an das Inhalts-Snippet übergeben habe, z. B. Dallas.

Was sind die verschiedenen Möglichkeiten, dies mit WordPress zu erreichen? Plugins oder benutzerdefinierter Code

Solutions Collecting From Web of "Wie erstelle ich ein wiederverwendbares Inhalts-Snippet, dem ich einen Wert übergeben kann?"

Der beste Weg, dies zu erreichen, wäre ein Shortcode oder ein Filter .

Ich neige dazu, den Shortcode in diesem Szenario zu verwenden, da Sie flexibel einen weiteren Absatz hinter dem automatisch erzeugten Inhalt hinzufügen können, der als Filter komplizierter ist. Außerdem weiß ich nicht, ob es sich bei Ihren Städten um benutzerdefinierte Post-Typen handelt oder ob WordPress auf andere Weise wissen könnte, dass dies eine Stadt und kein anderer Inhalt ist (mit einem meta_value , page_template , …).

Die function zum Erstellen des Inhalts

Die function zum Generieren des Inhalts ist jedoch ziemlich einfach. Ich habe __() hinzugefügt, um den Inhalt __() zu machen, wie Sie es bei jeder fest codierten Zeichenkette tun sollten.

 function f711_generate_city_texts( $cityname ) { // function receives cityname as variable return $cityname . __( 'is a beautiful city', 'f711_wpse' ); //returns the custom content with the cityname built in. } 

Jetzt müssen wir diese function dem Inhalt hinzufügen.

Hinzufügen des Kurzwahlcodes

Ich erstelle eine Shortcode-function und füge den Shortcode hinzu:

 add_shortcode( 'f711_citytext', 'f711_citytext_shortcode' ); function f711_citytext_shortcode( $atts ) { extract( shortcode_atts( array( 'city' => get_the_title(), // define city as a attribute for the shortcode, with the title as standard value ), $atts ) ); return f711_generate_city_texts( $city ); } 

In deinen Inhalten kannst du jetzt verwenden

 [f711_citytext city="yourcityname"] 

oder Sie können das Stadtattribut verlassen, wenn Sie innerhalb der Schleife sind, da get_the_title() als Standardwert in der function verwendet wird.

Einen Filter hinzufügen

Natürlich könnten Sie auch einen Filter hinzufügen, um den Text automatisch hinzuzufügen, da ich erwähnt habe, dass Sie wissen müssen, dass dieser Inhalt in diesem Fall zu einer Stadt gehört.

Ich werde einen meta_value , der ein bool mit f711_iscity auf true .

 add_filter( 'the_content', 'f711_citytext_filter', 10, 1 ); function f711_citytext_filter ( $content ) { if ( get_post_meta( get_the_ID(), 'f711_iscity', true ) === true ) return $content . f711_generate_city_texts( get_the_title() ); return $content; } 

Diese function prüft, ob Sie f711_iscity auf ” true und gibt den Inhalt mit dem angehängten generierten Text zurück. Andernfalls bleibt der Inhalt unberührt.

Fazit

Aus Gründen der Flexibilität würde ich in diesem Fall die Shortcode-Lösung bevorzugen.