{"id":954,"date":"2026-04-22T23:03:13","date_gmt":"2026-04-22T21:03:13","guid":{"rendered":"https:\/\/plugins.thomaszwirner.de\/?p=954"},"modified":"2026-05-24T12:20:49","modified_gmt":"2026-05-24T10:20:49","slug":"how-is-the-sustainability-of-the-plugins-ensured","status":"publish","type":"post","link":"https:\/\/plugins.thomaszwirner.de\/en\/externe-dateien-in-der-mediathek\/wie-wird-die-nachhaltigkeit-der-plugins-abgesichert\/","title":{"rendered":"How is the sustainability of the plugins ensured?"},"content":{"rendered":"<p class=\"has-large-font-size wp-block-paragraph\">On this website, I present all the open source plugins for WordPress that I have published. I am aware that this is a large number - and also a challenge, as each plugin should also have the same quality in terms of its functions, security and sustainability. I will briefly describe here how I ensure this sustainability.<\/p>\n\n\n\n<h2 id=\"mein-grundsatz\" class=\"wp-block-heading\">My principle<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Everything has to have a reason, and you can find it.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">That's why I often take a very close look at how something works before I release it to users. This sounds very time-consuming, but in my opinion it leads to enormous stability of the plugins, which is also reflected in very few support requests for the plugins.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">At the same time, I've also learned a lot about the WordPress core and countless other plugins - how things work and how they shouldn't be done.<\/p>\n\n\n\n<h2 id=\"codequalitat\" class=\"wp-block-heading\">Code quality<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">So that I can still understand my own code even years later, I comment very diligently. I have gotten into the habit of commenting almost every line, mostly in US-American English. There are files that consist of 2\/3 comments only - but that is quality for me. A chunk of code thrown down without any human sentence, as you unfortunately see in many other plugins, takes more time to be understood.<\/p>\n\n\n\n<h2 id=\"verwendung-von-ki\" class=\"wp-block-heading\">Use of AI<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I use the PHPStorm IDE for development and the code autocompletion function it contains, as well as the AI, which is also included, to optimize code from time to time. I also use Claude or Copilot from time to time to solve tricky things more quickly. However, I never let the AI write my code. If I do, I copy part of the code it suggests, adapt it and comment on it. Or I talk to the AI like a human colleague to find a solution without adopting what the AI suggests 1:1.<\/p>\n\n\n\n<h2 id=\"sicherheit\" class=\"wp-block-heading\">Security<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">There are a lot of things you should pay attention to when developing a website. Security is a very high priority for me. Unfortunately, I come across far too many hacked websites in my support in the WordPress forums and also in my professional environment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For this reason, every function that I add to my plugins is also considered holistically: its structure, its effect and its availability, both while you are logged in and as a visitor without login and also all interfaces that WordPress still offers (REST API, WP CLI ..).<\/p>\n\n\n\n<h2 id=\"prufungen-vor-jedem-release\" class=\"wp-block-heading\">Tests before each release<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A new version of each plugin is only released if it passes the following tests successfully and without exception:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Comply with WordPress coding standards by checking with their <a href=\"https:\/\/github.com\/WordPress\/WordPress-Coding-Standards\">composer Package<\/a>.<\/li>\n\n\n\n<li>Fulfillment of the tests of the <a href=\"https:\/\/github.com\/WordPress\/plugin-check-action\">WordPress Plugin Check Action<\/a> (corresponds to the check by the WordPress plugin team for each new upload in the repository).<\/li>\n\n\n\n<li>Completion of a scan with PHPStan with regard to possible bugs at level 8 out of 10 (unfortunately, WordPress as of 2026 does not yet go higher within a reasonable range).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Only a few plugins must also fulfill the following requirements:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A series of individual <span tabindex='0' class='glossary-item-container'>PHP<span class='glossary-item-hidden-content'><span class='glossary-item-header'>PHP<\/span> <span class='glossary-item-description'>PHP is a scripting language with a syntax based on C and Perl, which is mainly used to create dynamic websites or web applications.\r\r<a href=\"https:\/\/de.wikipedia.org\/wiki\/PHP\">https:\/\/de.wikipedia.org\/wiki\/PHP<\/a><\/span><\/span><\/span> Unit tests, which test specific sequences of functions within the plugins that must be fulfilled in every case.<\/li>\n\n\n\n<li>A test with the <span tabindex='0' class='glossary-item-container'>composer<span class='glossary-item-hidden-content'><span class='glossary-item-header'>composer<\/span> <span class='glossary-item-description'>application-oriented package manager for PHP<\/span><\/span><\/span> Package from <a href=\"https:\/\/github.com\/PHPCompatibility\/PHPCompatibility\">PHPCompatibility <\/a>with WordPress specifics.<\/li>\n<\/ul>\n\n\n\n<h2 id=\"der-weg-zu-einem-release\" class=\"wp-block-heading\">The path to a release<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I test every single function that I add to the plugins in at least 2 local test systems. I then create a local release (usually with <a href=\"https:\/\/ant.apache.org\/manual\/using.html\">ant<\/a>) and also test the new function in a test system. With <span tabindex='0' class='glossary-item-container'>GitHub<span class='glossary-item-hidden-content'><span class='glossary-item-header'>GitHub<\/span> <span class='glossary-item-description'>Software development platform<\/span><\/span><\/span> I then create a new release and run the checks there again. Only then does the release follow in the WordPress repository via SVN.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But that's not the end either: as soon as the release is published, I will test the installation of the new version from the WordPress repository in a test system again to make sure that nothing went wrong during the transfer via SVN.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quite a lot, isn't it? Yes, and now also largely automated.<\/p>\n\n\n\n<h2 id=\"irren-ist-menschlich\" class=\"wp-block-heading\">To err is human<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Software is only as secure as it was written. Mistakes can happen, and you have to accept that.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If someone does get in touch with me with a technical problem relating to my plugins, I want to know exactly how it happened. Not only because it is strange when the problem occurs with one of hundreds of users, but also because I like to get to the bottom of the problem - finding the cause and making further optimizations is an inner urge that I find hard to resist. Ultimately, however, finding a solution also fulfills the wishes of the user who reported the problem.<\/p>\n\n\n\n<h2 id=\"zukunftsfahig\" class=\"wp-block-heading\">Fit for the future<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For me, it is just as important that my plugins work as they should in the latest WordPress version. That's why I sit down before major WordPress releases and test every plugin with the first release candidate. In this way, I want to ensure that the plugins can also be used in the future.<\/p>\n\n\n\n<h2 id=\"mitarbeit\" class=\"wp-block-heading\">Cooperation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Only very few developers have contacted me so far to make additions to my plugins. You are also welcome to get in touch if you have an idea and a proposal for implementation. Please note that every addition must fulfill the above-mentioned checks as well as the code quality I require.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can find the sources of all my plugins on GitHub: <a href=\"https:\/\/github.com\/threadi\">https:\/\/github.com\/threadi<\/a><\/p>\n\n\n\n<h2 id=\"verwenden\" class=\"wp-block-heading\">Use<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I hope this article encourages you to use one of my plugins. If you have any questions, please feel free to contact the relevant <span tabindex='0' class='glossary-item-container'>support forum<span class='glossary-item-hidden-content'><span class='glossary-item-header'>support forum<\/span> <span class='glossary-item-description'>Forum for users of each plugin to ask questions and get help<\/span><\/span><\/span>.<\/p>","protected":false},"excerpt":{"rendered":"<p>On this website, I present all the open source plugins for WordPress that I have published. I am aware that this is a large number - and also a challenge, as each plugin should also have the same quality in terms of its functions, security and future viability. I will briefly describe here how I ensure this.<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[11,12,3,14,2,15,20,23],"tags":[33],"class_list":["post-954","post","type-post","status-publish","format-standard","hentry","category-audio-an-jedem-block","category-automatische-kategorie-fuer-beitraege","category-download-listen-block-mit-icons","category-easy-language-einfache-und-leichte-sprache","category-externe-dateien-in-der-mediathek","category-hochladen-von-bildern-per-imgur","category-personio-integration-light","category-provenexpert","tag-faq"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Wie wird die Nachhaltigkeit der Plugins abgesichert? - WordPress Plugins von Thomas Zwirner<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/plugins.thomaszwirner.de\/en\/external-files-in-the-media-library\/how-is-the-sustainability-of-the-plugins-ensured\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wie wird die Nachhaltigkeit der Plugins abgesichert? - WordPress Plugins von Thomas Zwirner\" \/>\n<meta property=\"og:description\" content=\"In dieser Website stelle ich alle von mir ver\u00f6ffentlichten OpenSource Plugins f\u00fcr WordPress vor. Eine gro\u00dfe Menge, das ist mir bewusst - und auch eine Herausforderung, da jedes Plugins auch die gleiche Qualit\u00e4t hinsichtlich ihrer Funktionen, Sicherheit und Zukunftsf\u00e4higkeit haben soll. Wie ich das sicherstelle, beschreibe ich hier kurz.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/plugins.thomaszwirner.de\/en\/external-files-in-the-media-library\/how-is-the-sustainability-of-the-plugins-ensured\/\" \/>\n<meta property=\"og:site_name\" content=\"WordPress Plugins von Thomas Zwirner\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-22T21:03:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-24T10:20:49+00:00\" \/>\n<meta name=\"author\" content=\"verwalter\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"verwalter\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"TechArticle\",\"@id\":\"https:\\\/\\\/plugins.thomaszwirner.de\\\/externe-dateien-in-der-mediathek\\\/wie-wird-die-nachhaltigkeit-der-plugins-abgesichert\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/plugins.thomaszwirner.de\\\/externe-dateien-in-der-mediathek\\\/wie-wird-die-nachhaltigkeit-der-plugins-abgesichert\\\/\"},\"author\":{\"name\":\"verwalter\",\"@id\":\"https:\\\/\\\/plugins.thomaszwirner.de\\\/#\\\/schema\\\/person\\\/d3e8b1604002e6b915f31b48a86a7967\"},\"headline\":\"Wie wird die Nachhaltigkeit der Plugins abgesichert?\",\"datePublished\":\"2026-04-22T21:03:13+00:00\",\"dateModified\":\"2026-05-24T10:20:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/plugins.thomaszwirner.de\\\/externe-dateien-in-der-mediathek\\\/wie-wird-die-nachhaltigkeit-der-plugins-abgesichert\\\/\"},\"wordCount\":925,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/plugins.thomaszwirner.de\\\/#\\\/schema\\\/person\\\/4dff08a99a879985211dc98128cb9140\"},\"keywords\":[\"FAQ\"],\"articleSection\":[\"Audio an jedem Block\",\"Automatische Kategorie f\u00fcr Beitr\u00e4ge\",\"Download Listen Block mit Icons\",\"Easy Language \u2013 Einfache und Leichte Sprache\",\"Externe Dateien in der Mediathek\",\"Hochladen von Bildern per Imgur\",\"Personio Integration Light\",\"ProvenExpert\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/plugins.thomaszwirner.de\\\/externe-dateien-in-der-mediathek\\\/wie-wird-die-nachhaltigkeit-der-plugins-abgesichert\\\/#respond\"]}]},{\"@type\":[\"WebPage\",\"QAPage\"],\"@id\":\"https:\\\/\\\/plugins.thomaszwirner.de\\\/externe-dateien-in-der-mediathek\\\/wie-wird-die-nachhaltigkeit-der-plugins-abgesichert\\\/\",\"url\":\"https:\\\/\\\/plugins.thomaszwirner.de\\\/externe-dateien-in-der-mediathek\\\/wie-wird-die-nachhaltigkeit-der-plugins-abgesichert\\\/\",\"name\":\"Wie wird die Nachhaltigkeit der Plugins abgesichert? - WordPress Plugins von Thomas Zwirner\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/plugins.thomaszwirner.de\\\/#website\"},\"datePublished\":\"2026-04-22T21:03:13+00:00\",\"dateModified\":\"2026-05-24T10:20:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/plugins.thomaszwirner.de\\\/externe-dateien-in-der-mediathek\\\/wie-wird-die-nachhaltigkeit-der-plugins-abgesichert\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/plugins.thomaszwirner.de\\\/externe-dateien-in-der-mediathek\\\/wie-wird-die-nachhaltigkeit-der-plugins-abgesichert\\\/\"]}],\"mainEntity\":{\"@type\":\"Question\",\"name\":\"Wie wird die Nachhaltigkeit der Plugins abgesichert?\",\"answerCount\":1,\"datePublished\":\"2026-04-22T23:03+02:00\",\"text\":\"In dieser Website stelle ich alle von mir ver\u00f6ffentlichten OpenSource Plugins f\u00fcr WordPress vor. Eine gro\u00dfe Menge, das ist mir bewusst - und auch eine Herausforderung, da jedes Plugins auch die gleiche Qualit\u00e4t hinsichtlich ihrer Funktionen, Sicherheit und Zukunftsf\u00e4higkeit haben soll. Wie ich das sicherstelle, beschreibe ich hier kurz.\",\"author\":{\"@type\":\"Person\",\"name\":\"Thomas Zwirner\",\"url\":\"https:\\\/\\\/plugins.thomaszwirner.de\"},\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"In dieser Website stelle ich alle von mir ver\u00f6ffentlichten OpenSource Plugins f\u00fcr WordPress vor. Eine gro\u00dfe Menge, das ist mir bewusst - und auch eine Herausforderung, da jedes Plugins auch die gleiche Qualit\u00e4t hinsichtlich ihrer Funktionen, Sicherheit und Zukunftsf\u00e4higkeit haben soll. Wie ich diese Nachhaltigkeit sicherstelle, beschreibe ich hier kurz.\\n\\n\\n\\nMein Grundsatz\\n\\n\\n\\n\\nAlles muss einen Grund haben, und man kann ihn finden.\\n\\n\\n\\n\\nDaher schaue ich oft sehr genau, wie etwas funktioniert, bevor ich es an die Anwender freigebe. Das klingt sehr aufwendig, f\u00fchrt jedoch zu einer aus meiner Sicht enormen Stabilit\u00e4t der Plugins, die sich auch in sehr wenigen Support-Anfragen zu den Plugins niederschl\u00e4gt.\\n\\n\\n\\nGleichzeitig habe ich dadurch jedoch auch enorm viel \u00fcber den WordPress Core sowie unz\u00e4hlige andere Plugins gelernt - wie was funktioniert und wie man es eben auch mal nicht machen sollte.\\n\\n\\n\\nCode-Qualit\u00e4t\\n\\n\\n\\nDamit ich selbst auch nach Jahren noch meinen eigenen Code verstehe, kommentiere ich sehr flei\u00dfig. Ich habe mir angew\u00f6hnt fast jede Zeile zu kommentieren, meist in us-amerikanischem Englisch. Es gibt Dateien, die bestehen zu 2\\\/3 nur aus Kommentaren - aber das ist f\u00fcr mich Qualit\u00e4t. Ein hingeworfener Code-Brocken ohne irgendeinen menschlichen Satz, wie man es leider in vielen anderen Plugins sieht, braucht mehr Zeit um verstanden zu werden.\\n\\n\\n\\nVerwendung von KI\\n\\n\\n\\nIch verwende zur Entwicklung die IDE PHPStorm und die in dieser vorhandene Autovervollst\u00e4ndigung von Code sowie ab und zu die ebenfalls enthaltene KI, um Code-Optimierungen vorzunehmen. Auch nutze ich ab und zu Claude oder Copilot um knifflige Sachen schneller zu l\u00f6sen. Niemals lasse ich jedoch die KI meinen Code schreiben. Wenn dann kopiere ich einen Teil des von ihr vorgeschlagenen Codes, adaptiere und kommentiere ihn. Oder ich spreche mit der KI wie mit einem menschlichen Kollegen um zu einer L\u00f6sung zu kommen, ohne das was die KI vorschl\u00e4gt 1:1 zu \u00fcbernehmen.\\n\\n\\n\\nSicherheit\\n\\n\\n\\nEs gibt vieles, worauf man bei der Web-Entwicklung achten sollte. Sicherheit hat f\u00fcr mich einen sehr hohen Stellenwert. Ich begegne leider viel zu vielen gehackten Websites bei meiner Unterst\u00fctzung in den WordPress-Foren und auch im beruflichen Umfeld.\\n\\n\\n\\nAus dem Grund wird jede Funktion, die ich in meinen Plugins erg\u00e4nze, auch ganzheitlich betrachtet: ihr Aufbau, ihre Wirkung und ihre Verf\u00fcgbarkeit, sowohl w\u00e4hrend man angemeldet ist, als auch als Besucher ohne Anmeldung und auch allen Schnittstellen, die WordPress noch bietet (REST API, WP CLI ..).\\n\\n\\n\\nPr\u00fcfungen vor jedem Release\\n\\n\\n\\nVon jedem Plugin wird nur eine neue Version ver\u00f6ffentlicht, wenn diese die folgenden Tests erfolgreich und ohne Ausnahme besteht:\\n\\n\\n\\n\\nErf\u00fcllen der WordPress Coding Standards durch Pr\u00fcfung mit deren composer Package.\\n\\n\\n\\nErf\u00fcllen der Pr\u00fcfungen der WordPress Plugin Check Action (entspricht der Pr\u00fcfung durch das WordPress Plugin Team bei jedem neuen Upload im Repository).\\n\\n\\n\\nErf\u00fcllen eines Scans mit PHPStan hinsichtlich m\u00f6glicher Bugs in Level 8 von 10 (h\u00f6her geht es bei WordPress Stand 2026 leider noch nicht in einem vertretbaren Rahmen).\\n\\n\\n\\n\\nNur ein paar Plugins m\u00fcssen auch noch folgendes erf\u00fcllen:\\n\\n\\n\\n\\nEine Reihe individueller PHP Unit Tests, die konkrete Abl\u00e4ufe von Funktionen innerhalb der Plugins testen, die in jedem Fall erf\u00fcllt werden m\u00fcssen.\\n\\n\\n\\nEine Pr\u00fcfung mit dem composer Package von PHPCompatibility mit WordPress-Spezifika.\\n\\n\\n\\n\\nDer Weg zu einem Release\\n\\n\\n\\nJede einzelne Funktion, die ich in den Plugins erg\u00e4nze, teste ich in mindestens 2 lokalen Testsystemen. Anschlie\u00dfend erstelle ich ein lokales Release (meist mit ant) und teste die neue Funktion ebenfalls in einem Testsystem. Bei GitHub erstelle ich dann ein neues Release und lasse dort nochmals die Pr\u00fcfungen durchlaufen. Danach erst folgt das Release in das WordPress Repository per SVN.\\n\\n\\n\\nAber auch das ist nicht das Ende: sobald das Release ver\u00f6ffentlicht ist, teste ich nochmals die Installation der neuen Version aus dem WordPress Repository in einem Testsystem damit beim \u00dcbertragen per SVN wirklich nichts schiefgegangen ist.\\n\\n\\n\\nGanz sch\u00f6n viel, ne? Ja, und inzwischen auch zu gro\u00dfen Teilen automatisiert.\\n\\n\\n\\nIrren ist menschlich\\n\\n\\n\\nSoftware ist nur so sicher, wie sie geschrieben wurde. Fehler k\u00f6nnen passieren, dazu muss man dann auch stehen.\\n\\n\\n\\nWenn sich doch mal jemand bei mir mit einem technischen Problem in Bezug auf meine Plugins meldet, m\u00f6chte ich sehr genau wissen wie es dazu kommt. Nicht nur, weil es merkw\u00fcrdig ist, wenn das Problem bei einem von hunderten Nutzern auftritt, sondern auch, weil ich dem Problem gerne auf den Grund gehe - die Ursache finden und eine weitere Optimierung vorzunehmen, ist ein innerer Drang, dem ich schwer widerstehen kann. Letztlich erf\u00fcllt die Findung einer L\u00f6sung aber auch die W\u00fcnsche des Anwenders, der das Problem gemeldet hatte.\\n\\n\\n\\nZukunftsf\u00e4hig\\n\\n\\n\\nF\u00fcr mich ist es ebenso wichtig, dass meine Plugins auch in der aktuellsten WordPress-Version so funktionieren wie sie sollten. Daher setze ich mich vor gro\u00dfen WordPress Releases ran und teste jedes Plugin mit dem ersten Release Candidate. Dadurch m\u00f6chte ich sicherstellen, dass die Plugins auch zuk\u00fcnftig verwendbar sind.\\n\\n\\n\\nMitarbeit\\n\\n\\n\\nNur ganz wenige Entwickler haben sich bisher gemeldet, um an meinen Plugins Erg\u00e4nzungen vorzunehmen. Gerne kannst auch Du dich melden, wenn du eine Idee hast und auch gleich einen Umsetzungsvorschlag. Beachte, dass jede Erg\u00e4nzung die o.g. Pr\u00fcfungen sowie die von mir gew\u00fcnschte Code-Qualit\u00e4t erf\u00fcllen muss.\\n\\n\\n\\nDu findest die Quellen aller meiner Plugins auf GitHub: https:\\\/\\\/github.com\\\/threadi\\n\\n\\n\\nVerwenden\\n\\n\\n\\nIch hoffe dieser Artikel best\u00e4rkt dich bei der Entscheidung, eines meiner Plugins zu verwenden. Solltest du Fragen haben, wende dich gerne an das betreffende Supportforum.\",\"datePublished\":\"2026-04-22T23:03+02:00\",\"url\":\"https:\\\/\\\/plugins.thomaszwirner.de\\\/en\\\/externe-dateien-in-der-mediathek\\\/wie-wird-die-nachhaltigkeit-der-plugins-abgesichert\\\/\",\"upvoteCount\":1,\"author\":{\"@type\":\"Person\",\"name\":\"Thomas Zwirner\",\"url\":\"https:\\\/\\\/plugins.thomaszwirner.de\"}},\"suggestedAnswer\":{\"@type\":\"Answer\",\"text\":\"In dieser Website stelle ich alle von mir ver\u00f6ffentlichten OpenSource Plugins f\u00fcr WordPress vor. Eine gro\u00dfe Menge, das ist mir bewusst - und auch eine Herausforderung, da jedes Plugins auch die gleiche Qualit\u00e4t hinsichtlich ihrer Funktionen, Sicherheit und Zukunftsf\u00e4higkeit haben soll. Wie ich diese Nachhaltigkeit sicherstelle, beschreibe ich hier kurz.\\n\\n\\n\\nMein Grundsatz\\n\\n\\n\\n\\nAlles muss einen Grund haben, und man kann ihn finden.\\n\\n\\n\\n\\nDaher schaue ich oft sehr genau, wie etwas funktioniert, bevor ich es an die Anwender freigebe. Das klingt sehr aufwendig, f\u00fchrt jedoch zu einer aus meiner Sicht enormen Stabilit\u00e4t der Plugins, die sich auch in sehr wenigen Support-Anfragen zu den Plugins niederschl\u00e4gt.\\n\\n\\n\\nGleichzeitig habe ich dadurch jedoch auch enorm viel \u00fcber den WordPress Core sowie unz\u00e4hlige andere Plugins gelernt - wie was funktioniert und wie man es eben auch mal nicht machen sollte.\\n\\n\\n\\nCode-Qualit\u00e4t\\n\\n\\n\\nDamit ich selbst auch nach Jahren noch meinen eigenen Code verstehe, kommentiere ich sehr flei\u00dfig. Ich habe mir angew\u00f6hnt fast jede Zeile zu kommentieren, meist in us-amerikanischem Englisch. Es gibt Dateien, die bestehen zu 2\\\/3 nur aus Kommentaren - aber das ist f\u00fcr mich Qualit\u00e4t. Ein hingeworfener Code-Brocken ohne irgendeinen menschlichen Satz, wie man es leider in vielen anderen Plugins sieht, braucht mehr Zeit um verstanden zu werden.\\n\\n\\n\\nVerwendung von KI\\n\\n\\n\\nIch verwende zur Entwicklung die IDE PHPStorm und die in dieser vorhandene Autovervollst\u00e4ndigung von Code sowie ab und zu die ebenfalls enthaltene KI, um Code-Optimierungen vorzunehmen. Auch nutze ich ab und zu Claude oder Copilot um knifflige Sachen schneller zu l\u00f6sen. Niemals lasse ich jedoch die KI meinen Code schreiben. Wenn dann kopiere ich einen Teil des von ihr vorgeschlagenen Codes, adaptiere und kommentiere ihn. Oder ich spreche mit der KI wie mit einem menschlichen Kollegen um zu einer L\u00f6sung zu kommen, ohne das was die KI vorschl\u00e4gt 1:1 zu \u00fcbernehmen.\\n\\n\\n\\nSicherheit\\n\\n\\n\\nEs gibt vieles, worauf man bei der Web-Entwicklung achten sollte. Sicherheit hat f\u00fcr mich einen sehr hohen Stellenwert. Ich begegne leider viel zu vielen gehackten Websites bei meiner Unterst\u00fctzung in den WordPress-Foren und auch im beruflichen Umfeld.\\n\\n\\n\\nAus dem Grund wird jede Funktion, die ich in meinen Plugins erg\u00e4nze, auch ganzheitlich betrachtet: ihr Aufbau, ihre Wirkung und ihre Verf\u00fcgbarkeit, sowohl w\u00e4hrend man angemeldet ist, als auch als Besucher ohne Anmeldung und auch allen Schnittstellen, die WordPress noch bietet (REST API, WP CLI ..).\\n\\n\\n\\nPr\u00fcfungen vor jedem Release\\n\\n\\n\\nVon jedem Plugin wird nur eine neue Version ver\u00f6ffentlicht, wenn diese die folgenden Tests erfolgreich und ohne Ausnahme besteht:\\n\\n\\n\\n\\nErf\u00fcllen der WordPress Coding Standards durch Pr\u00fcfung mit deren composer Package.\\n\\n\\n\\nErf\u00fcllen der Pr\u00fcfungen der WordPress Plugin Check Action (entspricht der Pr\u00fcfung durch das WordPress Plugin Team bei jedem neuen Upload im Repository).\\n\\n\\n\\nErf\u00fcllen eines Scans mit PHPStan hinsichtlich m\u00f6glicher Bugs in Level 8 von 10 (h\u00f6her geht es bei WordPress Stand 2026 leider noch nicht in einem vertretbaren Rahmen).\\n\\n\\n\\n\\nNur ein paar Plugins m\u00fcssen auch noch folgendes erf\u00fcllen:\\n\\n\\n\\n\\nEine Reihe individueller PHP Unit Tests, die konkrete Abl\u00e4ufe von Funktionen innerhalb der Plugins testen, die in jedem Fall erf\u00fcllt werden m\u00fcssen.\\n\\n\\n\\nEine Pr\u00fcfung mit dem composer Package von PHPCompatibility mit WordPress-Spezifika.\\n\\n\\n\\n\\nDer Weg zu einem Release\\n\\n\\n\\nJede einzelne Funktion, die ich in den Plugins erg\u00e4nze, teste ich in mindestens 2 lokalen Testsystemen. Anschlie\u00dfend erstelle ich ein lokales Release (meist mit ant) und teste die neue Funktion ebenfalls in einem Testsystem. Bei GitHub erstelle ich dann ein neues Release und lasse dort nochmals die Pr\u00fcfungen durchlaufen. Danach erst folgt das Release in das WordPress Repository per SVN.\\n\\n\\n\\nAber auch das ist nicht das Ende: sobald das Release ver\u00f6ffentlicht ist, teste ich nochmals die Installation der neuen Version aus dem WordPress Repository in einem Testsystem damit beim \u00dcbertragen per SVN wirklich nichts schiefgegangen ist.\\n\\n\\n\\nGanz sch\u00f6n viel, ne? Ja, und inzwischen auch zu gro\u00dfen Teilen automatisiert.\\n\\n\\n\\nIrren ist menschlich\\n\\n\\n\\nSoftware ist nur so sicher, wie sie geschrieben wurde. Fehler k\u00f6nnen passieren, dazu muss man dann auch stehen.\\n\\n\\n\\nWenn sich doch mal jemand bei mir mit einem technischen Problem in Bezug auf meine Plugins meldet, m\u00f6chte ich sehr genau wissen wie es dazu kommt. Nicht nur, weil es merkw\u00fcrdig ist, wenn das Problem bei einem von hunderten Nutzern auftritt, sondern auch, weil ich dem Problem gerne auf den Grund gehe - die Ursache finden und eine weitere Optimierung vorzunehmen, ist ein innerer Drang, dem ich schwer widerstehen kann. Letztlich erf\u00fcllt die Findung einer L\u00f6sung aber auch die W\u00fcnsche des Anwenders, der das Problem gemeldet hatte.\\n\\n\\n\\nZukunftsf\u00e4hig\\n\\n\\n\\nF\u00fcr mich ist es ebenso wichtig, dass meine Plugins auch in der aktuellsten WordPress-Version so funktionieren wie sie sollten. Daher setze ich mich vor gro\u00dfen WordPress Releases ran und teste jedes Plugin mit dem ersten Release Candidate. Dadurch m\u00f6chte ich sicherstellen, dass die Plugins auch zuk\u00fcnftig verwendbar sind.\\n\\n\\n\\nMitarbeit\\n\\n\\n\\nNur ganz wenige Entwickler haben sich bisher gemeldet, um an meinen Plugins Erg\u00e4nzungen vorzunehmen. Gerne kannst auch Du dich melden, wenn du eine Idee hast und auch gleich einen Umsetzungsvorschlag. Beachte, dass jede Erg\u00e4nzung die o.g. Pr\u00fcfungen sowie die von mir gew\u00fcnschte Code-Qualit\u00e4t erf\u00fcllen muss.\\n\\n\\n\\nDu findest die Quellen aller meiner Plugins auf GitHub: https:\\\/\\\/github.com\\\/threadi\\n\\n\\n\\nVerwenden\\n\\n\\n\\nIch hoffe dieser Artikel best\u00e4rkt dich bei der Entscheidung, eines meiner Plugins zu verwenden. Solltest du Fragen haben, wende dich gerne an das betreffende Supportforum.\",\"datePublished\":\"2026-04-22T23:03+02:00\",\"url\":\"https:\\\/\\\/plugins.thomaszwirner.de\\\/en\\\/externe-dateien-in-der-mediathek\\\/wie-wird-die-nachhaltigkeit-der-plugins-abgesichert\\\/\",\"upvoteCount\":1,\"author\":{\"@type\":\"Person\",\"name\":\"Thomas Zwirner\",\"url\":\"https:\\\/\\\/plugins.thomaszwirner.de\"}}}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/plugins.thomaszwirner.de\\\/externe-dateien-in-der-mediathek\\\/wie-wird-die-nachhaltigkeit-der-plugins-abgesichert\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/plugins.thomaszwirner.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Wie wird die Nachhaltigkeit der Plugins abgesichert?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/plugins.thomaszwirner.de\\\/#website\",\"url\":\"https:\\\/\\\/plugins.thomaszwirner.de\\\/\",\"name\":\"WordPress Plugins von Thomas Zwirner\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/plugins.thomaszwirner.de\\\/#\\\/schema\\\/person\\\/4dff08a99a879985211dc98128cb9140\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/plugins.thomaszwirner.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/plugins.thomaszwirner.de\\\/#\\\/schema\\\/person\\\/4dff08a99a879985211dc98128cb9140\",\"name\":\"Thomas Zwirner\",\"logo\":{\"@id\":\"https:\\\/\\\/plugins.thomaszwirner.de\\\/#\\\/schema\\\/person\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.thomaszwirner.de\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/plugins.thomaszwirner.de\\\/#\\\/schema\\\/person\\\/d3e8b1604002e6b915f31b48a86a7967\",\"name\":\"verwalter\",\"sameAs\":[\"https:\\\/\\\/plugins.thomaszwirner.de\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How is the sustainability of plugins ensured? - WordPress plugins from Thomas Zwirner","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/plugins.thomaszwirner.de\/en\/external-files-in-the-media-library\/how-is-the-sustainability-of-the-plugins-ensured\/","og_locale":"en_US","og_type":"article","og_title":"Wie wird die Nachhaltigkeit der Plugins abgesichert? - WordPress Plugins von Thomas Zwirner","og_description":"In dieser Website stelle ich alle von mir ver\u00f6ffentlichten OpenSource Plugins f\u00fcr WordPress vor. Eine gro\u00dfe Menge, das ist mir bewusst - und auch eine Herausforderung, da jedes Plugins auch die gleiche Qualit\u00e4t hinsichtlich ihrer Funktionen, Sicherheit und Zukunftsf\u00e4higkeit haben soll. Wie ich das sicherstelle, beschreibe ich hier kurz.","og_url":"https:\/\/plugins.thomaszwirner.de\/en\/external-files-in-the-media-library\/how-is-the-sustainability-of-the-plugins-ensured\/","og_site_name":"WordPress Plugins von Thomas Zwirner","article_published_time":"2026-04-22T21:03:13+00:00","article_modified_time":"2026-05-24T10:20:49+00:00","author":"verwalter","twitter_card":"summary_large_image","twitter_misc":{"Written by":"verwalter","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/plugins.thomaszwirner.de\/externe-dateien-in-der-mediathek\/wie-wird-die-nachhaltigkeit-der-plugins-abgesichert\/#article","isPartOf":{"@id":"https:\/\/plugins.thomaszwirner.de\/externe-dateien-in-der-mediathek\/wie-wird-die-nachhaltigkeit-der-plugins-abgesichert\/"},"author":{"name":"verwalter","@id":"https:\/\/plugins.thomaszwirner.de\/#\/schema\/person\/d3e8b1604002e6b915f31b48a86a7967"},"headline":"Wie wird die Nachhaltigkeit der Plugins abgesichert?","datePublished":"2026-04-22T21:03:13+00:00","dateModified":"2026-05-24T10:20:49+00:00","mainEntityOfPage":{"@id":"https:\/\/plugins.thomaszwirner.de\/externe-dateien-in-der-mediathek\/wie-wird-die-nachhaltigkeit-der-plugins-abgesichert\/"},"wordCount":925,"commentCount":0,"publisher":{"@id":"https:\/\/plugins.thomaszwirner.de\/#\/schema\/person\/4dff08a99a879985211dc98128cb9140"},"keywords":["FAQ"],"articleSection":["Audio an jedem Block","Automatische Kategorie f\u00fcr Beitr\u00e4ge","Download Listen Block mit Icons","Easy Language \u2013 Einfache und Leichte Sprache","Externe Dateien in der Mediathek","Hochladen von Bildern per Imgur","Personio Integration Light","ProvenExpert"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/plugins.thomaszwirner.de\/externe-dateien-in-der-mediathek\/wie-wird-die-nachhaltigkeit-der-plugins-abgesichert\/#respond"]}]},{"@type":["WebPage","QAPage"],"@id":"https:\/\/plugins.thomaszwirner.de\/externe-dateien-in-der-mediathek\/wie-wird-die-nachhaltigkeit-der-plugins-abgesichert\/","url":"https:\/\/plugins.thomaszwirner.de\/externe-dateien-in-der-mediathek\/wie-wird-die-nachhaltigkeit-der-plugins-abgesichert\/","name":"How is the sustainability of plugins ensured? - WordPress plugins from Thomas Zwirner","isPartOf":{"@id":"https:\/\/plugins.thomaszwirner.de\/#website"},"datePublished":"2026-04-22T21:03:13+00:00","dateModified":"2026-05-24T10:20:49+00:00","breadcrumb":{"@id":"https:\/\/plugins.thomaszwirner.de\/externe-dateien-in-der-mediathek\/wie-wird-die-nachhaltigkeit-der-plugins-abgesichert\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/plugins.thomaszwirner.de\/externe-dateien-in-der-mediathek\/wie-wird-die-nachhaltigkeit-der-plugins-abgesichert\/"]}],"mainEntity":{"@type":"Question","name":"Wie wird die Nachhaltigkeit der Plugins abgesichert?","answerCount":1,"datePublished":"2026-04-22T23:03+02:00","text":"In dieser Website stelle ich alle von mir ver\u00f6ffentlichten OpenSource Plugins f\u00fcr WordPress vor. Eine gro\u00dfe Menge, das ist mir bewusst - und auch eine Herausforderung, da jedes Plugins auch die gleiche Qualit\u00e4t hinsichtlich ihrer Funktionen, Sicherheit und Zukunftsf\u00e4higkeit haben soll. Wie ich das sicherstelle, beschreibe ich hier kurz.","author":{"@type":"Person","name":"Thomas Zwirner","url":"https:\/\/plugins.thomaszwirner.de"},"acceptedAnswer":{"@type":"Answer","text":"In dieser Website stelle ich alle von mir ver\u00f6ffentlichten OpenSource Plugins f\u00fcr WordPress vor. Eine gro\u00dfe Menge, das ist mir bewusst - und auch eine Herausforderung, da jedes Plugins auch die gleiche Qualit\u00e4t hinsichtlich ihrer Funktionen, Sicherheit und Zukunftsf\u00e4higkeit haben soll. Wie ich diese Nachhaltigkeit sicherstelle, beschreibe ich hier kurz.\n\n\n\nMein Grundsatz\n\n\n\n\nAlles muss einen Grund haben, und man kann ihn finden.\n\n\n\n\nDaher schaue ich oft sehr genau, wie etwas funktioniert, bevor ich es an die Anwender freigebe. Das klingt sehr aufwendig, f\u00fchrt jedoch zu einer aus meiner Sicht enormen Stabilit\u00e4t der Plugins, die sich auch in sehr wenigen Support-Anfragen zu den Plugins niederschl\u00e4gt.\n\n\n\nGleichzeitig habe ich dadurch jedoch auch enorm viel \u00fcber den WordPress Core sowie unz\u00e4hlige andere Plugins gelernt - wie was funktioniert und wie man es eben auch mal nicht machen sollte.\n\n\n\nCode-Qualit\u00e4t\n\n\n\nDamit ich selbst auch nach Jahren noch meinen eigenen Code verstehe, kommentiere ich sehr flei\u00dfig. Ich habe mir angew\u00f6hnt fast jede Zeile zu kommentieren, meist in us-amerikanischem Englisch. Es gibt Dateien, die bestehen zu 2\/3 nur aus Kommentaren - aber das ist f\u00fcr mich Qualit\u00e4t. Ein hingeworfener Code-Brocken ohne irgendeinen menschlichen Satz, wie man es leider in vielen anderen Plugins sieht, braucht mehr Zeit um verstanden zu werden.\n\n\n\nVerwendung von KI\n\n\n\nIch verwende zur Entwicklung die IDE PHPStorm und die in dieser vorhandene Autovervollst\u00e4ndigung von Code sowie ab und zu die ebenfalls enthaltene KI, um Code-Optimierungen vorzunehmen. Auch nutze ich ab und zu Claude oder Copilot um knifflige Sachen schneller zu l\u00f6sen. Niemals lasse ich jedoch die KI meinen Code schreiben. Wenn dann kopiere ich einen Teil des von ihr vorgeschlagenen Codes, adaptiere und kommentiere ihn. Oder ich spreche mit der KI wie mit einem menschlichen Kollegen um zu einer L\u00f6sung zu kommen, ohne das was die KI vorschl\u00e4gt 1:1 zu \u00fcbernehmen.\n\n\n\nSicherheit\n\n\n\nEs gibt vieles, worauf man bei der Web-Entwicklung achten sollte. Sicherheit hat f\u00fcr mich einen sehr hohen Stellenwert. Ich begegne leider viel zu vielen gehackten Websites bei meiner Unterst\u00fctzung in den WordPress-Foren und auch im beruflichen Umfeld.\n\n\n\nAus dem Grund wird jede Funktion, die ich in meinen Plugins erg\u00e4nze, auch ganzheitlich betrachtet: ihr Aufbau, ihre Wirkung und ihre Verf\u00fcgbarkeit, sowohl w\u00e4hrend man angemeldet ist, als auch als Besucher ohne Anmeldung und auch allen Schnittstellen, die WordPress noch bietet (REST API, WP CLI ..).\n\n\n\nPr\u00fcfungen vor jedem Release\n\n\n\nVon jedem Plugin wird nur eine neue Version ver\u00f6ffentlicht, wenn diese die folgenden Tests erfolgreich und ohne Ausnahme besteht:\n\n\n\n\nErf\u00fcllen der WordPress Coding Standards durch Pr\u00fcfung mit deren composer Package.\n\n\n\nErf\u00fcllen der Pr\u00fcfungen der WordPress Plugin Check Action (entspricht der Pr\u00fcfung durch das WordPress Plugin Team bei jedem neuen Upload im Repository).\n\n\n\nErf\u00fcllen eines Scans mit PHPStan hinsichtlich m\u00f6glicher Bugs in Level 8 von 10 (h\u00f6her geht es bei WordPress Stand 2026 leider noch nicht in einem vertretbaren Rahmen).\n\n\n\n\nNur ein paar Plugins m\u00fcssen auch noch folgendes erf\u00fcllen:\n\n\n\n\nEine Reihe individueller PHP Unit Tests, die konkrete Abl\u00e4ufe von Funktionen innerhalb der Plugins testen, die in jedem Fall erf\u00fcllt werden m\u00fcssen.\n\n\n\nEine Pr\u00fcfung mit dem composer Package von PHPCompatibility mit WordPress-Spezifika.\n\n\n\n\nDer Weg zu einem Release\n\n\n\nJede einzelne Funktion, die ich in den Plugins erg\u00e4nze, teste ich in mindestens 2 lokalen Testsystemen. Anschlie\u00dfend erstelle ich ein lokales Release (meist mit ant) und teste die neue Funktion ebenfalls in einem Testsystem. Bei GitHub erstelle ich dann ein neues Release und lasse dort nochmals die Pr\u00fcfungen durchlaufen. Danach erst folgt das Release in das WordPress Repository per SVN.\n\n\n\nAber auch das ist nicht das Ende: sobald das Release ver\u00f6ffentlicht ist, teste ich nochmals die Installation der neuen Version aus dem WordPress Repository in einem Testsystem damit beim \u00dcbertragen per SVN wirklich nichts schiefgegangen ist.\n\n\n\nGanz sch\u00f6n viel, ne? Ja, und inzwischen auch zu gro\u00dfen Teilen automatisiert.\n\n\n\nIrren ist menschlich\n\n\n\nSoftware ist nur so sicher, wie sie geschrieben wurde. Fehler k\u00f6nnen passieren, dazu muss man dann auch stehen.\n\n\n\nWenn sich doch mal jemand bei mir mit einem technischen Problem in Bezug auf meine Plugins meldet, m\u00f6chte ich sehr genau wissen wie es dazu kommt. Nicht nur, weil es merkw\u00fcrdig ist, wenn das Problem bei einem von hunderten Nutzern auftritt, sondern auch, weil ich dem Problem gerne auf den Grund gehe - die Ursache finden und eine weitere Optimierung vorzunehmen, ist ein innerer Drang, dem ich schwer widerstehen kann. Letztlich erf\u00fcllt die Findung einer L\u00f6sung aber auch die W\u00fcnsche des Anwenders, der das Problem gemeldet hatte.\n\n\n\nZukunftsf\u00e4hig\n\n\n\nF\u00fcr mich ist es ebenso wichtig, dass meine Plugins auch in der aktuellsten WordPress-Version so funktionieren wie sie sollten. Daher setze ich mich vor gro\u00dfen WordPress Releases ran und teste jedes Plugin mit dem ersten Release Candidate. Dadurch m\u00f6chte ich sicherstellen, dass die Plugins auch zuk\u00fcnftig verwendbar sind.\n\n\n\nMitarbeit\n\n\n\nNur ganz wenige Entwickler haben sich bisher gemeldet, um an meinen Plugins Erg\u00e4nzungen vorzunehmen. Gerne kannst auch Du dich melden, wenn du eine Idee hast und auch gleich einen Umsetzungsvorschlag. Beachte, dass jede Erg\u00e4nzung die o.g. Pr\u00fcfungen sowie die von mir gew\u00fcnschte Code-Qualit\u00e4t erf\u00fcllen muss.\n\n\n\nDu findest die Quellen aller meiner Plugins auf GitHub: https:\/\/github.com\/threadi\n\n\n\nVerwenden\n\n\n\nIch hoffe dieser Artikel best\u00e4rkt dich bei der Entscheidung, eines meiner Plugins zu verwenden. Solltest du Fragen haben, wende dich gerne an das betreffende Supportforum.","datePublished":"2026-04-22T23:03+02:00","url":"https:\/\/plugins.thomaszwirner.de\/en\/externe-dateien-in-der-mediathek\/wie-wird-die-nachhaltigkeit-der-plugins-abgesichert\/","upvoteCount":1,"author":{"@type":"Person","name":"Thomas Zwirner","url":"https:\/\/plugins.thomaszwirner.de"}},"suggestedAnswer":{"@type":"Answer","text":"In dieser Website stelle ich alle von mir ver\u00f6ffentlichten OpenSource Plugins f\u00fcr WordPress vor. Eine gro\u00dfe Menge, das ist mir bewusst - und auch eine Herausforderung, da jedes Plugins auch die gleiche Qualit\u00e4t hinsichtlich ihrer Funktionen, Sicherheit und Zukunftsf\u00e4higkeit haben soll. Wie ich diese Nachhaltigkeit sicherstelle, beschreibe ich hier kurz.\n\n\n\nMein Grundsatz\n\n\n\n\nAlles muss einen Grund haben, und man kann ihn finden.\n\n\n\n\nDaher schaue ich oft sehr genau, wie etwas funktioniert, bevor ich es an die Anwender freigebe. Das klingt sehr aufwendig, f\u00fchrt jedoch zu einer aus meiner Sicht enormen Stabilit\u00e4t der Plugins, die sich auch in sehr wenigen Support-Anfragen zu den Plugins niederschl\u00e4gt.\n\n\n\nGleichzeitig habe ich dadurch jedoch auch enorm viel \u00fcber den WordPress Core sowie unz\u00e4hlige andere Plugins gelernt - wie was funktioniert und wie man es eben auch mal nicht machen sollte.\n\n\n\nCode-Qualit\u00e4t\n\n\n\nDamit ich selbst auch nach Jahren noch meinen eigenen Code verstehe, kommentiere ich sehr flei\u00dfig. Ich habe mir angew\u00f6hnt fast jede Zeile zu kommentieren, meist in us-amerikanischem Englisch. Es gibt Dateien, die bestehen zu 2\/3 nur aus Kommentaren - aber das ist f\u00fcr mich Qualit\u00e4t. Ein hingeworfener Code-Brocken ohne irgendeinen menschlichen Satz, wie man es leider in vielen anderen Plugins sieht, braucht mehr Zeit um verstanden zu werden.\n\n\n\nVerwendung von KI\n\n\n\nIch verwende zur Entwicklung die IDE PHPStorm und die in dieser vorhandene Autovervollst\u00e4ndigung von Code sowie ab und zu die ebenfalls enthaltene KI, um Code-Optimierungen vorzunehmen. Auch nutze ich ab und zu Claude oder Copilot um knifflige Sachen schneller zu l\u00f6sen. Niemals lasse ich jedoch die KI meinen Code schreiben. Wenn dann kopiere ich einen Teil des von ihr vorgeschlagenen Codes, adaptiere und kommentiere ihn. Oder ich spreche mit der KI wie mit einem menschlichen Kollegen um zu einer L\u00f6sung zu kommen, ohne das was die KI vorschl\u00e4gt 1:1 zu \u00fcbernehmen.\n\n\n\nSicherheit\n\n\n\nEs gibt vieles, worauf man bei der Web-Entwicklung achten sollte. Sicherheit hat f\u00fcr mich einen sehr hohen Stellenwert. Ich begegne leider viel zu vielen gehackten Websites bei meiner Unterst\u00fctzung in den WordPress-Foren und auch im beruflichen Umfeld.\n\n\n\nAus dem Grund wird jede Funktion, die ich in meinen Plugins erg\u00e4nze, auch ganzheitlich betrachtet: ihr Aufbau, ihre Wirkung und ihre Verf\u00fcgbarkeit, sowohl w\u00e4hrend man angemeldet ist, als auch als Besucher ohne Anmeldung und auch allen Schnittstellen, die WordPress noch bietet (REST API, WP CLI ..).\n\n\n\nPr\u00fcfungen vor jedem Release\n\n\n\nVon jedem Plugin wird nur eine neue Version ver\u00f6ffentlicht, wenn diese die folgenden Tests erfolgreich und ohne Ausnahme besteht:\n\n\n\n\nErf\u00fcllen der WordPress Coding Standards durch Pr\u00fcfung mit deren composer Package.\n\n\n\nErf\u00fcllen der Pr\u00fcfungen der WordPress Plugin Check Action (entspricht der Pr\u00fcfung durch das WordPress Plugin Team bei jedem neuen Upload im Repository).\n\n\n\nErf\u00fcllen eines Scans mit PHPStan hinsichtlich m\u00f6glicher Bugs in Level 8 von 10 (h\u00f6her geht es bei WordPress Stand 2026 leider noch nicht in einem vertretbaren Rahmen).\n\n\n\n\nNur ein paar Plugins m\u00fcssen auch noch folgendes erf\u00fcllen:\n\n\n\n\nEine Reihe individueller PHP Unit Tests, die konkrete Abl\u00e4ufe von Funktionen innerhalb der Plugins testen, die in jedem Fall erf\u00fcllt werden m\u00fcssen.\n\n\n\nEine Pr\u00fcfung mit dem composer Package von PHPCompatibility mit WordPress-Spezifika.\n\n\n\n\nDer Weg zu einem Release\n\n\n\nJede einzelne Funktion, die ich in den Plugins erg\u00e4nze, teste ich in mindestens 2 lokalen Testsystemen. Anschlie\u00dfend erstelle ich ein lokales Release (meist mit ant) und teste die neue Funktion ebenfalls in einem Testsystem. Bei GitHub erstelle ich dann ein neues Release und lasse dort nochmals die Pr\u00fcfungen durchlaufen. Danach erst folgt das Release in das WordPress Repository per SVN.\n\n\n\nAber auch das ist nicht das Ende: sobald das Release ver\u00f6ffentlicht ist, teste ich nochmals die Installation der neuen Version aus dem WordPress Repository in einem Testsystem damit beim \u00dcbertragen per SVN wirklich nichts schiefgegangen ist.\n\n\n\nGanz sch\u00f6n viel, ne? Ja, und inzwischen auch zu gro\u00dfen Teilen automatisiert.\n\n\n\nIrren ist menschlich\n\n\n\nSoftware ist nur so sicher, wie sie geschrieben wurde. Fehler k\u00f6nnen passieren, dazu muss man dann auch stehen.\n\n\n\nWenn sich doch mal jemand bei mir mit einem technischen Problem in Bezug auf meine Plugins meldet, m\u00f6chte ich sehr genau wissen wie es dazu kommt. Nicht nur, weil es merkw\u00fcrdig ist, wenn das Problem bei einem von hunderten Nutzern auftritt, sondern auch, weil ich dem Problem gerne auf den Grund gehe - die Ursache finden und eine weitere Optimierung vorzunehmen, ist ein innerer Drang, dem ich schwer widerstehen kann. Letztlich erf\u00fcllt die Findung einer L\u00f6sung aber auch die W\u00fcnsche des Anwenders, der das Problem gemeldet hatte.\n\n\n\nZukunftsf\u00e4hig\n\n\n\nF\u00fcr mich ist es ebenso wichtig, dass meine Plugins auch in der aktuellsten WordPress-Version so funktionieren wie sie sollten. Daher setze ich mich vor gro\u00dfen WordPress Releases ran und teste jedes Plugin mit dem ersten Release Candidate. Dadurch m\u00f6chte ich sicherstellen, dass die Plugins auch zuk\u00fcnftig verwendbar sind.\n\n\n\nMitarbeit\n\n\n\nNur ganz wenige Entwickler haben sich bisher gemeldet, um an meinen Plugins Erg\u00e4nzungen vorzunehmen. Gerne kannst auch Du dich melden, wenn du eine Idee hast und auch gleich einen Umsetzungsvorschlag. Beachte, dass jede Erg\u00e4nzung die o.g. Pr\u00fcfungen sowie die von mir gew\u00fcnschte Code-Qualit\u00e4t erf\u00fcllen muss.\n\n\n\nDu findest die Quellen aller meiner Plugins auf GitHub: https:\/\/github.com\/threadi\n\n\n\nVerwenden\n\n\n\nIch hoffe dieser Artikel best\u00e4rkt dich bei der Entscheidung, eines meiner Plugins zu verwenden. Solltest du Fragen haben, wende dich gerne an das betreffende Supportforum.","datePublished":"2026-04-22T23:03+02:00","url":"https:\/\/plugins.thomaszwirner.de\/en\/externe-dateien-in-der-mediathek\/wie-wird-die-nachhaltigkeit-der-plugins-abgesichert\/","upvoteCount":1,"author":{"@type":"Person","name":"Thomas Zwirner","url":"https:\/\/plugins.thomaszwirner.de"}}}},{"@type":"BreadcrumbList","@id":"https:\/\/plugins.thomaszwirner.de\/externe-dateien-in-der-mediathek\/wie-wird-die-nachhaltigkeit-der-plugins-abgesichert\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/plugins.thomaszwirner.de\/"},{"@type":"ListItem","position":2,"name":"Wie wird die Nachhaltigkeit der Plugins abgesichert?"}]},{"@type":"WebSite","@id":"https:\/\/plugins.thomaszwirner.de\/#website","url":"https:\/\/plugins.thomaszwirner.de\/","name":"WordPress Plugins from Thomas Zwirner","description":"","publisher":{"@id":"https:\/\/plugins.thomaszwirner.de\/#\/schema\/person\/4dff08a99a879985211dc98128cb9140"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/plugins.thomaszwirner.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/plugins.thomaszwirner.de\/#\/schema\/person\/4dff08a99a879985211dc98128cb9140","name":"Thomas Zwirner","logo":{"@id":"https:\/\/plugins.thomaszwirner.de\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/www.thomaszwirner.de"]},{"@type":"Person","@id":"https:\/\/plugins.thomaszwirner.de\/#\/schema\/person\/d3e8b1604002e6b915f31b48a86a7967","name":"administrator","sameAs":["https:\/\/plugins.thomaszwirner.de"]}]}},"_links":{"self":[{"href":"https:\/\/plugins.thomaszwirner.de\/en\/wp-json\/wp\/v2\/posts\/954","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/plugins.thomaszwirner.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/plugins.thomaszwirner.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/plugins.thomaszwirner.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/plugins.thomaszwirner.de\/en\/wp-json\/wp\/v2\/comments?post=954"}],"version-history":[{"count":9,"href":"https:\/\/plugins.thomaszwirner.de\/en\/wp-json\/wp\/v2\/posts\/954\/revisions"}],"predecessor-version":[{"id":983,"href":"https:\/\/plugins.thomaszwirner.de\/en\/wp-json\/wp\/v2\/posts\/954\/revisions\/983"}],"wp:attachment":[{"href":"https:\/\/plugins.thomaszwirner.de\/en\/wp-json\/wp\/v2\/media?parent=954"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/plugins.thomaszwirner.de\/en\/wp-json\/wp\/v2\/categories?post=954"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/plugins.thomaszwirner.de\/en\/wp-json\/wp\/v2\/tags?post=954"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}