Widget / Plugin erstellen

  • Hallo,

    ich benötige für WP ein/mehrere Plugins bzw. Widgets. Bei ein paar Dingen weiss ich garnicht ob das überhaupt möglich ist. Ich möchte jedenfalls, wenn möglich, keine Änderungen am Template vornehmen müssen und Templates frei wählen können. Sprich die Funktionsfähigkeit sollte durch Plugins / Widgets gegeben sein.

    Folgende Anforderung benötige ich:
    Ein Blog der normal genutzt wird, sprich ich schreibe Artikel zu beliebigen Themen. Dazu wird eine Datenbank mit hinterlegt. Stellt euch Ärzte vor: Hier haben wir die Adresse und das Fachgebiet.
    Es müssen also Tabellen zusätzlich in die WP-Datenbank mit z. B. folgenden Feldern:

    Tabelle 1:
    Name
    Strasse
    Plz
    Ort
    FachgebietNr.

    Tabelle 2:
    FachgebietNr.
    FachbebietName


    ok, diese könnte ich noch über phpmyadmin einmalig importieren.

    Nun zum WP:

    Eingangseite (Home): Hier hätte ich gerne die Möglichkeit die Fachgebiete in einem Block anzuzeigen. Diese sollten aber nicht in der normalen Sitebar stehen sondern dort wo normal der aktuelleste Artikel von WP steht, darunter dann die normalen WP-Artikel, also unter Header im Contentbereich.
    Klickt man nun auf ein Fachgebiet sollen alle passenden Ärzte gelistet werden. Alternativ wäre hier auch eine Suche nach "Meier" über ein Suchfeld möglich.
    Hierfür könnte man die page.php bearbeiten, aber dies würde wieder einen Eingriff in das Template bedeuten, oder kann man eine "page" im Plugin integrieren?
    Wie verabeite ich aber dann die Parameter? Wenn ich die page.php als eigene, z. B. aerzte.php erstelle muss ich ja die Parameter weiter verarbeiten können, also meinedomain.de/aerzte.php?name=Meier&fachgebiet=XYZ (schöner natürlich ohne Parameter und htaccess gesteuert mit sauberen URL), oder eben nur &fachgebiet oder nur &name.
    Nächstes Problem, die Seite page.php hat immer den Seitentitel und Titel den ich beim Erstellen vorgebe, z. B. Ärzte. Hier sollte aber je nach Suche der Titel angepaßt werden. Also: Fachärzte für XYZ.
    Die Anzeige der gefilterten Datensätze sollte dann über ein eigenes Template geschehen.

    Auf WP-Unterseiten soll ein Tag-Widget in die Sitebar mit z. B. Fachgebieten der dann wieder auf die passende Seite verlink.

    Ist sowas möglich, wie kann ich es angehen. Bis jetzt hab nur das Widget für die Sitebar hinbekommen. Die Verlinkung jedoch nur mit der Eingabe der Unterseite über das Admin-Menu, wenn man das alles kombiniert wäre es schön, wenn das Widget schon weiss wohin es verlinken muss.

    Für Ansätze wäre ich dankbar.

    Eventuell, auch wenn es nicht hier in die Rubrik gehört, als Angebot, falls jemand sowas erstellen kann.

    Ich brauche soetwas öfters, es werden jedoch die Themen unterschiedlich sein. Heute Ärzte morgen vielleicht etwas aus dem Einzelhandel, etc.... Es gibt aber immer eine Tabelle mit Stammdaten und eine mit den Gruppen/Kategorien.
    Die Logik soll jedoch immer gleich bleiben.

    Gruß
    Jan

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • AW: Widget / Plugin erstellen

    Also Du willst die wildesten Funktionen aber nichts an den Templates ändern? Ich denke das wird nichts werden.

    Das Geheimnis des Könnens liegt im Wollen!
    [size=12]Bitte keine Hilfegesuche per PN (auch keine "privaten" Links). Das ist ein öffentliches Forum.[/SIZE]

  • Hi SirEctor,

    sagen wir mal so, ich möchte so wenig wie möglich in die Templates. Da ich dies ja öfters benötige, hoffe ich, daß die Entwicklungzeit die man rein steckt, nachher durch Ersparnis wieder rausgeholt wird.

    Im Moment versuche ich mal eine Seite, also page.php anzupassen. Hier bekomm ich schon je nach Template (ich versuchs mit diversen freien Templates) Problem. Mal heißt es page.php dann irgendwie anders. Nun hab ich die richtige Seite gefunden aber komischerweise steht /*Template Name: MeinTemplate*/ jetzt in der Seite im Browser, sollte ja eigentlich nicht sein.

    Also wohl weiter probieren.

    Gruß
    Jan

  • wenn wenige extra ansprüche an das design durch deine funktion sein brauchen,
    per Plugins baut man sich Widget (sidebar) oder Funktionen, die man zb per Shortcodes dann vielfältig einfach auf Seiten, Beiträge einbauen kann, durch Hocks können auch diverse Plätze und Vorgänge im Wordpress genutzt werden um wiederrum eigenen Funktion einzubinden, im Dashboard kann man sich Adminstrierfunktionen einbauen und somit ansich fast jeden wunsch erfüllen.
    PHP und Datenbankkenntnisse sind von Vorteil um selbst zu Coden, wie man Plugins für Wordpress baut findet man unter http://codex.wordpress.org

    Wordpress weil es spass macht, besonders beim WordPress Meetup in Linz

  • Hi Shadow,

    danke für den Link, den kenn ich, leider bin ich nicht perfekt in englisch, so Seiten sind nicht leicht für mich. PHP und Mysql kann ich etwas, es reicht um meine Daten zu schaufen. Wie gesagt ein Wiget für Tags das Daten aus der Tabelle ausgibt hab ich ja schon geschafft, auch wenn das Widget selber ein Beispiel aus dem Netz war. Ich gebe zu, alles darin verstehe ich noch nicht, aber ich bekomm es in WP initialisiert, greife über WP auf die Daten zu.
    Nun strick ich mit der Seite selber rum. Hier hab ich halt Probleme: wie erkenne ich wirklich die Grundseite der page.php die ich ändern kann. Wie kann ich den Titel ändern im Code ein add_filter('wp_title', 'Mein Titel') ging nicht. Muss der zweite Parameter immer eine Funktion sein oder geht auch eine Variable?

    Gruß
    Jan

  • wenn du schon php function hast, kannst du diese mittels Shortcodes einfach in Beiträge und Seiten einschreiben, da brauchst du keinen eingriff in thementemplates, was wie du auch schon geschrieben hast, nicht wirklich ideal sein kann, wenn man die funktionen bei verschiedenen themen nutzen möchte.

    Wordpress weil es spass macht, besonders beim WordPress Meetup in Linz

  • Hi Shadow,

    danke, das plugin ist schön einfach. Soweit komm ich damit auch klar. Du setzt also irgendwo im Artikel oder Seite ein [hw] und WP ersetzt das ganze durch die Ausgabe. durch add_Shortcode. Für meine Sache, kann ich denn auch zusätzliche Parameter übergeben? Bei meinem o.g. Beispiel suche Fachgebiet. Muss ich ja das Fachgebiet mit übergeben. Und kann ich dann auch aus der Funktion(bei dir wäre das ja die hallo_welt_shortcode() ) den WP_title und den Seitentitel ändern? Geht das?


    Gruß
    Jan

  • Danke, das werde ich mir ansehen, denke es hilft mir dann.

    Ich kann doch auch die ganze Sache direkt in einer eigenen Page einarbeiten oder? Ich habe jetzt mal folgendes am Anfang der Page eingefügt:
    GLOBAL $suche;
    $suche = $_GET['psuche'];
    add_filter( 'the_title', 'title_filter') ;
    function title_filter( $titel ) {

    $titel = $suche;

    return $titel;
    }

    Das wars aber nicht, $suche ist in der funktion leer, ist also NULL, der Titel selber ist leer und dafür haben nun die Titel im Widget "Letzte Beiträge" nur noch Nr. (denke es ist die ID) statt dem Titel stehen.

    Einmal editiert, zuletzt von Idef (8. Februar 2013 um 12:41)

  • dachte du kennst dich mit PHP aus, das solltest du zumindest Variabeln erkennen,
    denn wie du beschreibst suche ist leer, ja dann steht natürlich in Titel nichts, und wenn du dir den codex gelesen hättest (das bleibt einfach nicht aus), dann hättest du erfahren das so wie du est machst, einfach alle Titel (bei betrag, seite und auch die titel in der Sidebar usw), ersetzt werden,bei dir mit einer leeren $suche Variable, und filter hast du auch keinen, und es auch weitere wichtige Dinge zu beachten gibt es, aber das steht alles im Codex.
    und setzt PHP Kenntnis voraus, nicht nur das man weis das auf webspace PHP läuft, das ist einfach zu wenig.

    Wordpress weil es spass macht, besonders beim WordPress Meetup in Linz

  • Hi Shadow,

    jepp zu schnell gelesen :) Habs nun wie folgt geändert:
    $suche = $_GET['psuche'];

    add_filter( 'the_title', 'eb_function',20);
    add_filter( 'wp_title', 'eb_functionStitle',1);

    function eb_function($title) {
    global $suche;
    if (!empty($suche))
    {
    if (in_the_loop() )
    {
    $title = $suche ;
    }
    }

    return $title;
    }
    function eb_functionStitle($title) {
    global $suche;
    if (!empty($suche))
    {
    if (in_the_loop() )
    {
    $title = $suche ." | ".$get_bloginfo('name') ;
    }
    }

    return $title;
    }

    Und so gehts. Problem beim Seitentitel war noch das ich auch All in one SEO laufen habe. Der hat mir den Titel dann wieder geändert. Kann man aber ja pro Seite abschalten.

    Im Moment mach ich das noch alles in der page.php. Denke aber, wenn ich, wie dein Hallo Welt Beispiel, das ganze in ein Widget setzte, sollte es damit auch gehen.
    Hab mir das jetzt so vorgestellt, das ich in eine normale Seite den Shortcode einfüge der nur den Start des Wigdets verursacht, erst in dem Moment sollte er Title und Inhalt nach meinen wünschen anpassen.
    Sprich:
    -Ausführen der add_filter für $title und $wp_title
    -Shortcode ersetzen durch Daten die aus der Datenbank kommen.

    Dann hätte ichs doch schon. Somit wäre dann kein Eingriff mehr in die Templates nötig.

  • So, nun hab ich das Ganze mal in ein Widget verfrachtet. Der shortcode funktioniert prima, nur die zwei add_filter jetzt nicht mehr. Beide Funktionen werden zwar aufgerufen, aber in_the_loop() gibt mir kein true zurück. Wo hab ich jetzt den Denkfehler, warum geht es auf der page.php aber nicht im Widget?

  • Hi!

    Jetzt muss ich doch nochmal was fragen.

    Ich setzte am Angang von meinem plugin:

    add_filter( 'the_title', 'eb_Btitle',20);
    add_filter( 'wp_title', 'eb_Stitle',1);

    the_title wird auch geändert, wp_title aber nicht. Hab mich versucht durch einige Seiten per google zu wühlen. Wenn ich das richtig verstehe, dann muss ich wp_title über die function.php ändern. Das würde aber heißen, daß ich in das Template eingreifen muss.

    Oder hab ich hier doch was falsch verstanden? Aber warum führt er mit den filter dann nicht aus?

    Gruß
    Jan

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!