Archiv der Kategorie: PHP

Inhaltsverzeichnis mit Links oder auch: darf ich vorstellen, der Permalink

Wozu ein Inhaltsverzeichnis?

Wieso nicht? Ich möchte schließlich meinen Lesern einen schönen Überblick über meine Beiträge liefern, in Kurzform und so ähnlich übersichtlich wie ich das im Dashboard unter „Alle Beiträge“ vorfinde.

Jaaa dafür gibt es Sitemap-Plugins, die alle Beiträge nach allen möglichen Kriterien auflisten – aber das fand ich dann doch mit Kanonen auf Spatzen geschossen. Ich brauchte für mein Inselfisch-Kochbuch eine simple Liste aller Rezepte, alphabetisch bitteschön, nach Buchstaben geordnet. Und weil ich kein Plugin gefunden habe, das genau meinen Zweck erfüllte, hab ich mir eins selber geschrieben.

Damit ich mein Publikum nicht verwirre: wir haben ja schon eine Liste aller Beiträge! Ja, aber noch nicht mit Link zum Draufklicken, der direkt zum Beitrag führt, und das machen wir jetzt. Das sieht im Inselfisch-Kochbuch life so aus: Inhaltsverzeichnis A-Z

Gestatten: der Permalink

Was ist eigentlich ein Permalink? Darüber haben die Kollegen vom Elbnetz einen hervorragenden Beitrag „Was sind eigentlich Permalinks„verfaßt, den ich ihnen zur ausführlichen Information ans Herz legen möchte. Ganz kurz und knapp gesagt, Permalinks sind aussagekräftige URLs, die sind sie wahrscheinlich von ihrem WordPress sowieso gewohnt. Wenn sie einen Beitrag in ihrem Urlaubsfotoblog anschauen und mal einen Blick in die Titelleiste ihres Browsers werfen, steht da zum Beispiel sowas wie:

meineseite.de/urlaubsbilder/2017/01/25/gardasee/

Das ist ein sogenannter „sprechender“ Permalink. Das läßt sich schön im Klartext lesen, das ist suchmaschinenfreundlich und sogar für Menschen mit Handicap im Sinne der Barrierefreiheit wunderbar zu lesen. Wie ihr WordPress diese Permalinks anlegt ist unter Einstellungen/Permalinks festgelegt, wahrscheinlich ist dort die Option „Tag und Name“ angewählt. Damit erhält jeder Beitrag so einen aussagekräftigen Permalink, und über den können wir ihn auch aufrufen. Dafür brauchen wir:

Die WordPress-Funktion get_permalink(  )

Im einfachsten Fall ruft man diese Funktion nur mit der ID des gewünschten Beitrags auf. Das sieht zum Beispiel so aus:

$perm= get_permalink( $einpost->ID );

Die Variable $perm bekommt damit den Permalink des aktuellen Beitrags, der über die ID ja eindeutig identifiziert ist. Das bauen wir in unsere foreach-Schleife mit ein, und schon haben wir die Permalinks unserer Beiträge mit in der Ausgabe! Das sieht jetzt fein aufgelistet so aus:

tabelle_mit_permalinks

tabelle_mit_permalinks

Links aus Permalinks

Jetzt brauchen wir nur noch einen <a href> um den Permalink herumzubasteln, und wir haben unseren Link zum Beitrag. Sieht im einfachsten Fall so aus:

links_in_aktion

links_in_aktion

Ist noch nicht richtig schön, aber es funktioniert, und es eröffnet jede Menge Spielmöglichkeiten!

HTML Tabellenausgabe als Beispiel

Wir waren gestern bei der Ausgabe eines Select* auf die wp_posts stehengeblieben. Wie man so etwas mit ein wenig HTML hübscher formatiert sollte eigentlich bekannt sein, aber ich zeigs hier mal als grundlegendes Beispiel ohne grosse Erklärungen.

echo "<table>";    
    
    // Titelzeile ausgeben
    echo "<tr><td>ID<td/><td>post_status</td><td>post type</td></tr>";
    
    //Eine Zeile pro Datensatz ausgeben
    foreach ( $alleposts as $einpost ) {     
        
        echo "<tr><td>".$einpost->ID."<td/>";
        echo "<td>".$einpost->post_status."</td>";
        echo "<td>".$einpost->post_type."</td>";
        echo "</tr>";
    }
echo "</table>";

Die thead und tbody Tags sind hier nicht dabei, aber die brauchen wir später noch, ich hab sie mal vorauseilend mit dazu erwähnt.
Das Ergebnis sollte jetzt in etwa so aussehen:

html_tabelle

html_tabelle

Wie die Tabelle letztendlich genau gestylt wird, hängt von ihrem Theme ab, aber wir lassen es jetzt mal bei der schlichten Darstellung, OK?

Sie können mit unserem SQL-Statement ruhig ein bißchen rumschussern, ein „ORDER BY post_title“ sortiert die Ausgabe natürlich alphabetisch nach Titel, ein „ORDER BY post_date “ nach Datum und so weiter. Es ist auch gestattet noch mehr Felder hinzuzunehmen, das geht in unserem Beispiel immer mit $einpost->’feldname‘, spielen sie hier ruhig auch ein bißchen rum. Für den besseren Überblick empfehle ich, die Titelzeile der HTML-Tabelle ebenfalls immer entsprechend anzupassen.

Und wenn sie mit ihrer Ausgabe zufrieden sind, spendiere ich ein hübsches Plugin, aber erst im nächsten Artikel.

Das erste Plugin: PHP Code for Posts

Meine erste Wahl

Ich hab lang überlegt, welches der Zillionen Plugins für  WordPress ich als erstes vorstelle, aber irgendwie ist mir die Auswahl am Ende dann nicht besonders schwer gefallen. Als alter Programmierer will man halt auch was programmieren, nicht bloß Plugins zusammenkleistern. Und die einfachste Möglichkeit, WordPress eigenen PHP-Code unterzujubeln geht über dieses (oder ein Ähnliches) Plugin. Ich hätte auch zuerst erklären können, wie man einen Shortcode anlegt oder wie man ein eigenes Plugin schreibt, aber ich geh gern den einfachsten Weg, und PHP Code for Posts ist so schön straight, das wärmt mein altes Programmiererherz richtig. KISS – keep it short and simple, so nannten wir das früher immer.

Installieren

Also, ran an die Plugin-Installation (ich gehe davon aus daß das nichts Unbekanntes ist), suchen nach „PHP Code for Posts“ und das geniale kleine Plugin von Jamie Fraser installieren und gleich aktivieren.

screenshot_phpcodeforposts

screenshot_phpcodeforposts

Hier kommt noch der Link zur offiziellen Plugin-Seite, der Vollständigkeit halber.

Nach der Installation haben sie am unteren Ende des Admin Menüs einen neuen Eintrag „PHP Code“, das wird jetzt unser Arbeitspferd.

adminmenu_phpcode

adminmenu_phpcode

Das erste Code-Snippet: Hallo Welt! – was sonst?

Ich erkläre das jetzt dieses eine Mal etwas genauer,  schließlich wird PHP Code for Posts jetzt unsere wichtigste Arbeitsgrundlage, das soll schon funktionieren.  Eigentlich ist es ja selbsterklärend… aaaber ich will ja auch die Anfänger und Hobbyprogrammierer hier mitziehen, also, los gehts:

  1.  Den Menüpunkt PHP Code anwählen, den blauen Button „New Snippet“ anklicken.
  2. Einen Namen für das Code Snippet und eine kurze Beschreibung eingeben
  3. Da wo steht „CODE HERE“ die berühmte Hallo-Welt-Zeile eintragen.
hallowelt

hallowelt

Jetzt noch „Save Code Snippet“ nicht vergessen, und sie kriegen oben den Shortcode für das Snippet angezeigt.

snippet1

snippet1

Den Shortcode kopieren sie sich, inklusive der eckigen Klammern.

Jetzt brauchen wir noch eine Testseite, also Neu/Seite, und die betiteln wir mal mit einem schönen Namen, z. B. „Testseite“ 🙂 und fügen den Shortcode ein.

testseite

testseite

Seite veröffentlichen, angucken und Voila! Unser erstes PHP Snippet für WordPress ist gelungen!

hallowelt_ausgabe

hallowelt_ausgabe

Wie, mehr nicht? Gemach, gemach. Wir haben ja auch nur eine einzige echo-Anweisung programmiert, und genau das macht unser Code Snippet, eine simple Textausgabe. Sie können aber in PHP Code Snippets jeden beliebigen PHP Code eingeben, und der wird treu und brav ausgeführt – alles, aber wirklich alles ! Auch SQL-Statements mit DELETE oder UPDATE auf der Datenbank, dabei ist also ein bißchen Vorsicht geboten. Unser Arbeitspferd steht bereit und aufgezäumt da, jetzt kanns losgehen.

Kleiner Tipp am Rande

Ich mache mir immer zwei Browserfenster auf, in einem lasse ich das PHP Code Editfenster anzeigen, im zweiten mache ich meine Beispielseite auf. Code ändern, Save Code Snippet nicht vergessen, auf die Beispielseite gehen und einmal F5 drücken, und sie sehen sofort was ihr geänderter Code macht. Meistens hab ich noch ein drittes Fenster mit dem phpmyadmin offen, da guckt man mal schnell auf die Datenbank, ob die Abfrageergebnisse auch plausibel sind.

Alles klar? Bereit für ein bißchen PHP auf der Datenbank? Gut, im nächsten Beitrag starten wir durch.

Für wen ist dieser Blog gedacht?

Ist ernstgemeint: für alte Programmierer. Das ist jetzt nicht unbedingt für Tattergreise gedacht, sondern für technisch interessierte Leute, die schon ein paar Jahre Erfahrung in der IT auf dem Buckel haben. Dazu zähle ich auch ausdrücklich die alten Hobby-Programmierer, denn von denen gibt es viele sehr gute da draussen, die womöglich ihre erste Datenbank noch anno Dunnerkeil mit dBase geschrieben haben und die sich mit Excel, Word und Access schon unter DOS auskannten.

Also für Dinosaurier?  Ausdrücklich JA! Ich liebe Dinos, vermutlich weil ich selber mittlerweile einer bin 😉

Und mit diesen Dinosauriern möchte ich mich gerne über WordPress unterhalten, die erfolgreichste Blog-Software aller Zeiten. Ich selber nutze Wordpess seit einigen Jahren als Frontend für die Erstellung kleiner und mittlerer Webseiten, und bin eigentlich ein begeisterter Fan,  es ist so schön einfach zu bedienen, es ermöglicht auf einfachste Weise wunderbare Layouts und ist unendlich erweiterbar.

Warum „eigentlich“ ein Fan?

Weil ich nicht alles an WordPress gut finde.  Es gibt auch Sachen, die mich echt nerven, oder wo ich nicht verstehe warum man Dinge unnötig kompliziert macht. Ich möchte hier aber keinesfalls verbiesterte Kritik üben, mir geht es um eine eher lockere, ich würde fast sagen spielerische Herangehensweise, denn WordPress kann auch richtig Spaß machen.

Was ich voraussetze

Einige allgemeine Grundlagen der Programmierung (Sie sollten schon wissen wie man ein if..then..else und sowas konstruiert), solide SQL-Grundkenntnisse und ein allgemeines Verständnis des relationalen Datenbankmodells, dazu noch für den optischen Zuckerguß Erfahrung mit HTML und CSS, und ein bißchen PHP und MySQL kann auch nichts schaden. Und natürlich zumindest erste Erfahrungen mit WordPress, wenigstens ihre Urlaubsfotos sollen sie schonmal damit veröffentlich haben 😉

Was  ich nicht machen werde

Ich werde hier keine Sammlung von fix und fertigen Code Snippets zum Rauskopieren aufstellen, dafür fehlt mir einfach die Geduld. Einige beispielhafte Codeschnipsel hier und da müssen genügen, sie können ja selber tippen, und alte Programmierer lassen sich von verschachtelten Klammerungen und der allgemeinen Gänsefüßchenwut nicht abschrecken. Mir geht es darum, daß sie meine Codebeispiele nach vollziehen können, weil sie sie verstanden haben. Hier wird es also keinen  Copy&Paste-Laden geben, sondern eher eine lockere Plauderei über Konzepte mit eingestreuten Programmierbeispielen, die sie selber ausbauen und aufhübschen können. Sie werden sehen, wir werden jede Menge Spaß damit haben!