Plugin für die Kommunikationsfunktion

Wie sich aus der Diskussion zu meinem Vortrag Pages als Lieferanten für Widgets ergeben hat, ist es aus verschiedenen Gründen ratsam, den PHP-Aufruf der Kommunikationsfunktion

<?php dk_get_content(1234) ?>

 durch einen Shortcode zu ersetzen. Dies könnte man in der functions.php erledigen, aber da es nur geringfügig mehr Aufwand macht ein Plugin zu schreiben, erfhält man dafür den Vorteil der problemlosen Wiederverwendbarkeit in eigenen Sites oder Sites anderer. Die in Pages als Lieferanten für Widgets defnierte Kommunikationsfunktion


function dk_get_content($post_id, $hilfsseite){
   $post = get_post($post_id);
   $content = $post->post_content;
   echo $content;}

Kannn nun folgendermaßen in ein Plugin umgesetzt werden mit dem Shortcod cont:

<?php
/*
Plugin Name: Get Content
Description: Get the content of a specific page or post, the shortcode ist [cont id=nnnn], additional parameters have no funcitional meaning, can understood as comment.
Version: 1.0
Author: Dietrich Koch
*/
add_shortcode ('cont','dk_get_content');
function dk_get_content($attr){
   $post = get_post($attr['id']);
   $content = $post->post_content;
   return do_shortcode($content);
};
?>

 Im Gegensatz zur ursprünglichen Funktion muss hier der zurückgegebene content noch mit do_shortcode bearbeitet werden, um genestete Shortcodes zu berücksichtigen. Filter werden beim Auslesen des Contents nicht beachtet, da dies in unserer Anwendung nur stören würde.
Der Aufruf des Shortcodes könnte dann folgendermasßen aussehen:

[ cont id=1234 page=45]

Der Parameter page steht dann für den Rückverweise auf die (Menü-)Nummer der liefernden Seite. Da page auch im NIVO-Slider kein definierter Parameter ist, kann er hier gleichfalls für den Rückverweis auf die Seite verwendet werden, die das Slider-Widget beliefert, z. B.:
[ nivo theme="oik" post_parent=10576 trans="fade" pause=10000 caption=n page=46]
Ich denke hier ist eine größere Einheitlichkeit und auch Sicherheit gegenüber dem ursprünglichen funktionalen Ansatz erreicht worden.

2 thoughts on “Plugin für die Kommunikationsfunktion

  1. Sehr schöne Verbesserung deines Plugins. Ich würde vielleicht noch einen etwas eindeutigeren Shortcode-Namen verwenden. Es könnte sonst passieren, dass du ein Plugin installierst, das auch den Shortcode-Namen „cont“ verwendet. Nenne es doch z.B. einfach so wie die Funktion vorher, also „dk_get_content“. Ist zwar nicht so schön kurz, aber dafür bekommst du damit sicherlich keine Konflikte.

    • Die Kürze hat mich gereizt, Problem war mir bewusst. Aber nun müsste ich es auf der aktuellen Seite an zu vielen Stellen ändern. Also für die nächste Seite oder falls es jemand benutzen will: Shortcode unverwechselbar machen!!!

Comments are closed.