Best Practice für die Einbeziehung der Plugin-Ausgabe in eine Vorlage ohne Verwendung von Shortcode?

Ich brauche Ihre Empfehlung für die beste Vorgehensweise hier:

  • Ein benutzerdefinierter Post-Typ, den ich erstellt habe, benötigt eine Liste von Anhängen am Ende des Post-Inhalts.
  • Ich habe eine Reihe von functionen erstellt, die die Liste der entsprechenden Anhänge für einen Beitrag anzeigen.
  • Ich möchte keinen Shortcode verwenden, um diese Anhangsliste einzufügen, da jeder Beitrag dieses Post-Typs die Liste haben sollte
  • Ich suche nach einem tragbaren, wiederverwendbaren Ansatz

Mein erster Ansatz bestand darin, die Anhangfunktionen in ein eigenständiges Plugin zu kapseln. Aber wie kann ich die Plugin-Ausgabe in die Seite integrieren, wenn ich keinen Shortcode verwende?

Meine Lösung war, ein eigenes Pseudo-Template-Tag (“the_attachments ()”) zu erstellen, welches im Plugin definiert ist. Dann benutzt meine Template-Seite custom-post-type.php dieses Pseudo-Template-Tag direkt nach dem_content () und wir bekommen unsere nette Liste.

Aber ist das wirklich der beste Ansatz? Jetzt haben wir eine Vorlage, die von einem externen Plugin abhängig ist. Wenn das Plugin nicht da ist, “bricht” die Vorlage. Es ist schwierig, ein Plugin aus einer Vorlagenperspektive zu “fordern”, da is_plugin_active () nur auf der Admin-Ebene verfügbar ist, und das wahrscheinlich aus einem Grund (weil es eine dumme Idee ist, eine Vorlage von einem Plugin abhängig zu machen!)

So bleibt mir entweder: A) Entkoppeln der Plugin-Ausgabe von der Vorlage, ähnlich wie ein Widget funktioniert (wenn ja, wie gebe ich die $ Post-Informationen an dieses Widget weiter?), Oder B) bette das “Plugin” ein “Code innerhalb der Template-functionen (aber ist das dann wirklich tragbar?)

Solutions Collecting From Web of "Best Practice für die Einbeziehung der Plugin-Ausgabe in eine Vorlage ohne Verwendung von Shortcode?"

< ?php // A) // inside your template if ( function_exists( 'the_attachment_stuff()' ) ) { // do stuff } // better/faster if ( class_exists( 'attachment_plugin_class' ) ) { // do stuff } // B) // inside your template do_action( 'the_attachment_suff'); // means setting this inside your plugin // this avoids throwing errors or aborting if the hook isn't in your template add_action( 'the_attachment_stuff', 'your_callback_fn' ); // C) function add_attachment_stuff() { if ( ! is_admin() ) return; // the following is guess and theory... $content = get_the_content(); $content .= the_attachment_stuff(); // in case the attachment_stuff returns instead of echos the result/output. } // @link http://codex.wordpress.org/Plugin_API/Action_Reference // only add on publish, on 'post_save' we would add it multiple times add_action( 'publish_post', 'add_attachment_stuff', 100 ); add_action( 'publish_phone', 'add_attachment_stuff', 100 ); 

Sie können Ihre Plugins-function durch Hinzufügen mit einem Filter auf the_content ausgeben.

 function ta_post_attachment() { if ( is_singular( 'your_custom_post_type' ) { // do stuff } } add_filter( 'the_content', 'ta_post_attachment' );