{"id":6033,"date":"2014-03-23T14:05:57","date_gmt":"2014-03-23T13:05:57","guid":{"rendered":"https:\/\/www.herr-rau.de\/wordpress\/?p=6033"},"modified":"2023-06-14T07:50:52","modified_gmt":"2023-06-14T05:50:52","slug":"mein-erstes-wordpress-plugin-gedichte-mit-zeilennummern","status":"publish","type":"post","link":"https:\/\/www.herr-rau.de\/wordpress\/2014\/03\/mein-erstes-wordpress-plugin-gedichte-mit-zeilennummern.htm","title":{"rendered":"Mein erstes Wordpress-Plugin: Gedichte mit Zeilennummern"},"content":{"rendered":"<div style='text-align:right;'><small>(<a href='https:\/\/www.herr-rau.de\/wordpress\/2014\/03\/mein-erstes-wordpress-plugin-gedichte-mit-zeilennummern.htm#comments'>6 Kommentare.<\/a>)<\/small> <\/div>\n<p>Aus Gr\u00fcnden m\u00f6chte ich gerne auch im Browser Gedichte zum Bearbeiten anbieten. Dazu geh\u00f6ren aber Zeilennummern. Diese Nummern will ich aber nicht von Hand schreiben m\u00fcssen, daf\u00fcr gibt es Computer. Zeilennummern sind gar nicht so einfach.<\/p>\n\n\n\n<p>Ich m\u00f6chte Text einfach aus der Webseite herauskopieren k\u00f6nnen, um ihn weiterzuverarbeiten; ich m\u00f6chte ebenso einfach Text in Wordpress anlegen k\u00f6nnen, der dann als zeilennummerierter Text ausgegeben wird. Wordpress macht automatisch Zeilenumbr\u00fcche, wenn man Enter dr\u00fcckt, und einen neuen Absatz, wenn man eine Leerzeile l\u00e4sst &#8211; das soll erhalten bleiben beim Kopierexport ins Textverarbeitungsprogramm.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>M\u00f6glichkeit 1:<\/strong> Vor jede f\u00fcnfte Zeile wird eine Nummer geschrieben, vor jede andere Zeile ein paar Leerzeichen, leere Zeilen werden nicht mitgez\u00e4hlt. Das ist dann aber schlecht, wenn jemand das Gedicht herauskopieren und bearbeiten m\u00f6chte: dann muss man die Leerzeichen und Zeilennummern von Hand entfernen.<\/li>\n\n\n\n<li><strong>M\u00f6glichkeit 2:<\/strong> Man packt jede Zeile in ein eigenes Listenelement und l\u00e4sst dieses per CSS hochz\u00e4hlen. Aber das Herauskopieren geht auch dann nicht so einfach: Zumindest bei meinem Browser kann man den Text herauskopieren, hat beim Einf\u00fcgen ins Textverarbeitungsprogramm aber noch Listenartefakte. Unklar ist mir au\u00dferdem, wie ich die Grenzen zwischen Strophen markieren soll.<\/li>\n\n\n\n<li><strong>M\u00f6glichkeit 3:<\/strong> Eine zweispaltige Tabelle, links die automatisch erzeugten Zeilennummern, rechts der Text. So funktionieren die meisten Syntax-Highlighter-Plugins, und daf\u00fcr habe ich mich dann auch entschieden. Schwierig ist allerdings, dass ich nicht mit vorformatiertem Text (mit dem pre-Tag) arbeiten m\u00f6chte, sondern mit normal formatiertem Text, also mit Zeilenumbr\u00fcchen (br-Tag) und Abs\u00e4tzen (p-Tag).<\/li>\n<\/ul>\n\n\n\n<p>Herausgekommen ist mein erstes Wordpress-Plugin: <a href=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/line-numbers-for-poems.zip\">line-numbers-for-poems<\/a>. Es ist bestimmt noch nicht sehr effizient, und nicht mit sehr gro\u00dfen Texten getestet, aber es tut, was es soll:<\/p>\n\n\n<table class=\"lnp\"><tr><td class=\"lnpNumbers\"><p>\n<br \/><\/p><p><br \/><br \/><br \/><\/p><p><br \/>5<br \/><br \/><\/p><p><br \/><\/p><\/td><td class = \"lnpPoem\"><p>\n<span class=\"lnpUncountedTitle\">Unter Wasser Bl\u00e4schen machen<\/span><\/p>\n<p>Kinder, ein R\u00e4tsel! H\u00f6rt mich an!<br \/>\nWer es herausbekommt, kriegt Geld! \u2013 Wie kann<br \/>\nMan unter Wasser Bl\u00e4schen machen?<\/p>\n<p>Das m\u00fcsst ihr versuchen \u2013 unbedingt! &#8211;<br \/>\nIn der Badewanne. Und wenn es gelingt,<br \/>\nWerdet ihr lachen. <\/p>\n<p><span class=\"lnpUncountedAuthor\">Joachim Ringelnatz<\/span><\/p><\/td><\/tr><\/table>\n\n\n\n<p>Geschrieben wird das im Wordpress-Backend so (jeweils ohne die Leerzeichen nach den \u00f6ffnenden Klammern):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[ poem][ title]Unter Wasser Bl\u00e4schen machen[\/title]\n\nKinder, ein R\u00e4tsel! H\u00f6rt mich an!\nWer es herausbekommt, kriegt Geld! \u2013 Wie kann\nMan unter Wasser Bl\u00e4schen machen?\n\nDas m\u00fcsst ihr versuchen \u2013 unbedingt! -\nIn der Badewanne. Und wenn es gelingt,\nWerdet ihr lachen.\n\n[ author]Joachim Ringelnatz[\/author]\n[\/poem]\n<\/pre>\n\n\n\n<p>Das Gedicht kann man halbwegs einfach kopieren und ins Textverarbeitungsprogramm einf\u00fcgen, ohne dass die Zeilennummern mitgehen. Das Design steckt in der begleitenden CSS-Datei zum Plugin, probeweise ist der Titel immer fett und der Autor kursiv.<br>Ob vor oder nach dem author-Shortcode eine Leerzeile kommt, ist egal, ebenso, ob der title-Shortcode (oder der Text selber) unmittelbar nach dem poem-Shortcode steht oder in der Zeile darunter. Und das war ein hartes St\u00fcck Arbeit; was allerdings die Z\u00e4hlung immer noch durcheinanderbringt: wenn der Text mit zwei Zeilenumbr\u00fcchen hintereinander anf\u00e4ngt.<\/p>\n\n\n\n<p><strong>Technisches:<\/strong><\/p>\n\n\n\n<p>Das Plugin funktioniert so, dass es auf einen sogenannten Shortcode im Blogeintrag reagiert und diesen durch etwas anderes ersetzt, auch unter Ber\u00fccksichtigung des Textes, der sich urspr\u00fcnglich innerhalb der Shortcode-Grenzen befunden hat.<br>In meinem Fall wird dieser Text genommen, und a) in die rechte Spalte einer Tabelle geschrieben und b) zeilenweise durchgegangen, ob die Zeile mit einem Zeilenumbruch schlie\u00dft oder einem Absatzende, damit parallel dazu die entsprechend hochgez\u00e4hlten und ebenso mit einem Zeilenumbruch oder einem Absatzende formatierten Zeilennummern in die linke Spalte geschrieben werden. Die Zeilennummern sollen ja b\u00fcndig zum Text sein, und Abs\u00e4tze sind gerne mal so formatiert, dass sie mehr Abstand haben als einfache Zeilenumbr\u00fcche.<\/p>\n\n\n\n<p>Das klingt kompliziert, aber eigentlich sind solche Shortcode-Plugins bei Wordpress ganz einfach. <a href=\"http:\/\/codex.wordpress.org\/Shortcode_API\">Hier die offizielle Seite dazu<\/a>, und <a href=\"https:\/\/www.dougv.com\/2012\/03\/16\/making-a-simple-wordpress-shortcode-plugin\/\">hier ein einfaches Tutorial.<\/a><\/p>\n\n\n\n<p>Und danke an <a href=\"https:\/\/twitter.com\/texttheater\">@texttheater<\/a> f\u00fcr die Tipps bei Twitter. Wenn ich das Plugin ein paarmal \u00fcberarbeitet habe, stelle ich es gerne bei Wordpress ein. Ich kann PHP nur so radebrechen und kenne mich wenig aus bei Wordpress, deshalb gibt es sicher noch einiges bei der Effizienz zu verbessern. Im Moment bin ich erst mal froh, dass das funktioniert.<\/p>\n\n\n\n<p><em>Nachtrag: Funktioniert in Gutenberg nur als Shortcode-Block.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>(6 Kommentare.) Aus Gr\u00fcnden m\u00f6chte ich gerne auch im Browser Gedichte zum Bearbeiten anbieten. Dazu geh\u00f6ren aber Zeilennummern. Diese Nummern will ich aber nicht von Hand schreiben m\u00fcssen, daf\u00fcr gibt es Computer. Zeilennummern sind gar nicht so einfach. Ich m\u00f6chte Text einfach aus der Webseite herauskopieren k\u00f6nnen, um ihn weiterzuverarbeiten; ich m\u00f6chte ebenso einfach Text [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[313],"tags":[233],"class_list":["post-6033","post","type-post","status-publish","format-standard","hentry","category-tagebuch","tag-programmierprojekte"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/6033","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/comments?post=6033"}],"version-history":[{"count":2,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/6033\/revisions"}],"predecessor-version":[{"id":56657,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/6033\/revisions\/56657"}],"wp:attachment":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/media?parent=6033"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/categories?post=6033"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/tags?post=6033"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}