{"id":20852,"date":"2026-10-03T13:37:00","date_gmt":"2026-10-03T11:37:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=20852"},"modified":"2026-09-30T12:13:32","modified_gmt":"2026-09-30T10:13:32","slug":"plugin-verzeichnis-richtlinien","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/plugin-verzeichnis-richtlinien\/","title":{"rendered":"WordPress.org-Plugin-Richtlinien: woran Einreichungen scheitern"},"content":{"rendered":"<p>Ein Plugin, das auf einer Testinstallation fehlerfrei l\u00e4uft, ist noch kein Plugin, das WordPress.org in sein Verzeichnis aufnimmt. Jede neue Einreichung durchl\u00e4uft eine automatische Vorpr\u00fcfung und danach ein manuelles Review durch das Plugins Team, Ma\u00dfstab sind die Detailed Plugin Guidelines. Am 29.09.2026 umfasst die Seite 18 nummerierte Richtlinien, zuletzt aktualisiert am 11.03.2026. Die Beanstandungen, die das Team beschreibt, sind selten Sonderf\u00e4lle, sondern wiederkehrende Muster: fehlende oder widerspr\u00fcchliche Lizenzangaben, Funktionen hinter einer Bezahlschranke, verschwiegene Anfragen an fremde Server, standardm\u00e4\u00dfig eingeschaltete Credit-Links und Plugin-Namen, die mit einer fremden Marke beginnen.<\/p>\n<p>Dieser Beitrag ordnet die 18 Richtlinien nach Themen, zeigt an einem kleinen Plugin, wie Zustimmung vor einer ausgehenden Anfrage und ein Credit-Link als Opt-in im Code aussehen, erkl\u00e4rt die Entstehung des Slugs und verfolgt eine Einreichung vom ZIP-Upload bis zum ersten SVN-Commit, samt den Warteschlangenzahlen vom 28.09.2026. Plugin Check, <span class=\"lw-artikel-geplant\">die Sicherheitsfunktionen<\/span> und das Readme-Format haben in dieser Reihe eigene Beitr\u00e4ge. Die Beitr\u00e4ge zu den eigenen Plugins <a href=\"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/eine-wordpress-website-mit-lite-page-cache-beschleunigen\/\">Lite Page Cache<\/a> und <a href=\"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/absicherung-von-wordpress-logins-wp-admin-captcha\/\">WP Admin Captcha<\/a> zeigen, was solche Plugins auf einer Website leisten; hier geht es um den Weg ins offizielle Verzeichnis.<\/p>\n<h2>Achtzehn Richtlinien in vier Gruppen<\/h2>\n<p>Die Nummerierung verr\u00e4t nichts dar\u00fcber, wie oft eine Regel zur Ablehnung f\u00fchrt, und eine Aufschl\u00fcsselung nach Richtlinie ver\u00f6ffentlicht das Plugins Team nicht. Der Jahresbericht f\u00fcr 2025 nennt nur Summen: 12.713 gepr\u00fcfte Plugins, 5.415 Freigaben, 59.137 festgestellte Probleme, und bei 38,7 Prozent der gepr\u00fcften Plugins kam keine Antwort der Autoren. Daneben pflegt das Team die Handbuchseite \u201eCommon issues\u201c mit Ausz\u00fcgen aus seinen Review-Mails; auch sie ordnet nicht nach H\u00e4ufigkeit und bezeichnet sich als unvollst\u00e4ndig. Die Reihenfolge hier folgt den Themen dieser Seite und der Entwickler-FAQ und ist eine Gruppierung, keine Rangfolge.<\/p>\n<table>\n<thead>\n<tr>\n<th>Gruppe<\/th>\n<th>Richtlinien<\/th>\n<th>Kernregel<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Lizenz und Code<\/td>\n<td>1, 4, 13<\/td>\n<td>GPL-kompatible Lizenz, lesbarer Code, keine mitgelieferten Core-Bibliotheken<\/td>\n<\/tr>\n<tr>\n<td>Gesch\u00e4ftsmodell<\/td>\n<td>5, 6, 8<\/td>\n<td>Keine gesperrten Funktionen, dokumentierte Dienste, kein Code und keine Updates von Fremdservern<\/td>\n<\/tr>\n<tr>\n<td>Schutz der Nutzer<\/td>\n<td>7, 10, 11<\/td>\n<td>Zustimmung vor externem Kontakt, Credits standardm\u00e4\u00dfig aus, kein vereinnahmtes Dashboard<\/td>\n<\/tr>\n<tr>\n<td>Verzeichnis und Verhalten<\/td>\n<td>2, 3, 9, 12, 14\u201318<\/td>\n<td>Verantwortung, Redlichkeit, kein Readme-Spam, SVN nur f\u00fcr Releases, vollst\u00e4ndiges Plugin, Markenrecht<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Zwei Richtlinien rahmen die \u00fcbrigen ein. Nach Richtlinie 2 tragen Entwickler die Verantwortung f\u00fcr jede Datei, auch f\u00fcr Bibliotheken Dritter, und f\u00fcr die Bedingungen der genutzten Dienste. Richtlinie 18 beh\u00e4lt dem Team vor, Regeln zu \u00e4ndern, Plugins zu entfernen, Ausnahmen zu gew\u00e4hren und auch aus Gr\u00fcnden zu handeln, die nicht in der Liste stehen. Der Katalog ist eine Untergrenze, kein abschlie\u00dfender Vertrag.<\/p>\n<h2>Lizenz, lesbarer Code und mitgelieferte Bibliotheken<\/h2>\n<p>Richtlinie 1 verlangt eine mit der GNU General Public License vereinbare Lizenz; empfohlen wird \u201eGPLv2 or later\u201c, die Lizenz von WordPress selbst. Das gilt f\u00fcr den gesamten Inhalt der ZIP-Datei einschlie\u00dflich Datendateien und Bildern, Komponenten Dritter werden an der Liste kompatibler Lizenzen auf gnu.org gemessen. \u201eCommon issues\u201c zeigt mehrere Spielarten desselben Problems: keine GPL-kompatible Lizenz angegeben, unterschiedliche Lizenzen in Readme und Plugin-Header, inkompatibler Code im Paket und minifizierte Dateien ohne dokumentierten Quelltext.<\/p>\n<p>Der letzte Punkt geh\u00f6rt zu Richtlinie 4. Verschleierter Code ist verboten, minifizierte Builds sind nur zul\u00e4ssig, wenn der lesbare Quelltext beiliegt oder im Readme \u00f6ffentlich verlinkt ist. Wer Composer nutzt, liefert die <code>composer.json<\/code> mit. Richtlinie 13 untersagt, Bibliotheken mitzuliefern, die WordPress bereits enth\u00e4lt; \u201eCommon issues\u201c nennt unter anderem jQuery, SimplePie, PHPMailer und PHPass. Auf derselben Seite stehen Entwicklungsreste wie <code>node_modules<\/code>, Testsuiten und Demo-Ordner. Nichts davon ist schwer zu beheben, doch jeder Punkt kostet eine Mailrunde. Header-Felder und Readme behandelt <span class=\"lw-artikel-geplant\">ein eigener Beitrag dieser Reihe<\/span>.<\/p>\n<h2>Trialware, Dienste und Code von fremden Servern<\/h2>\n<p>Die sch\u00e4rfsten Grenzen betreffen das Gesch\u00e4ftsmodell. Richtlinie 5 verbietet Trialware: Funktionen d\u00fcrfen nicht bis zur Zahlung gesperrt sein und nicht nach einer Testphase oder einem Kontingent abschalten. Reiner Sandbox-Zugang zu einer API gilt ebenfalls als Trialware. Richtlinie 9 wertet es zudem als unredlich, den Eindruck zu erwecken, enthaltene Funktionen m\u00fcssten erst bezahlt werden.<\/p>\n<p>Was erlaubt ist, beschreibt Richtlinie 6. Ein Plugin darf Schnittstelle zu einem externen, auch kostenpflichtigen Dienst sein, wenn dieser substanzielle Funktionalit\u00e4t bietet und im Readme dokumentiert ist, am besten mit Link zu den Nutzungsbedingungen. Ausgeschlossen sind Dienste, die nur Lizenzen pr\u00fcfen, w\u00e4hrend die Funktion im Plugin steckt, Code, der nur zum Schein auf einen Server wandert, und reine Shops.<\/p>\n<p>Die technische Seite regelt Richtlinie 8. Code aus einem dokumentierten Dienst darf \u00fcber eine sichere Verbindung geladen werden. Verboten sind Updates oder Installationen von Plugins, Themes und Add-ons von anderen Servern als WordPress.org, die Installation einer Premium-Fassung desselben Plugins, fremde CDNs f\u00fcr anderes als Schriften und per iframe eingebundene Admin-Seiten. \u201eCommon issues\u201c erg\u00e4nzt, dass Plugins f\u00fcr Updates keine anderen Server kontaktieren und keine Bilder, Skripte oder Stylesheets ohne Dienstbezug auslagern d\u00fcrfen.<\/p>\n<p>F\u00fcr Freemium-Plugins ergibt sich ein klares Muster. Das kostenlose Plugin muss f\u00fcr sich vollst\u00e4ndig sein, bezahlte Funktionen d\u00fcrfen in einem Dienst liegen, und Upgrade-Hinweise sind im Rahmen von Richtlinie 11 erlaubt: kontextbezogen oder auf der Einstellungsseite, seitenweite Hinweise schlie\u00dfbar. Die eigene Bezahlfassung darf das kostenlose Plugin nicht herunterladen und installieren.<\/p>\n<h2>Zustimmung vor Anfragen und Links im Frontend<\/h2>\n<p>Richtlinie 7 untersagt Kontakt zu fremden Servern ohne ausdr\u00fcckliche und autorisierte Zustimmung, \u00fcblicherweise per Opt-in, Registrierung beim Dienst oder Kontrollk\u00e4stchen in den Einstellungen. Die Datenerhebung geh\u00f6rt ins Readme, m\u00f6glichst mit Datenschutzerkl\u00e4rung. Als unzul\u00e4ssig nennt die Richtlinie unter anderem automatisches Sammeln ohne Best\u00e4tigung, ausgelagerte Assets ohne Dienstbezug, undokumentiert genutzte externe Daten wie Sperrlisten und Werbung Dritter, die Aufrufe verfolgt. Plugins, die Schnittstelle zu einem Dienst sind, etwa ein Spamfilter mit externer API, sind ausgenommen: Installation und Konfiguration gelten dort als Zustimmung.<\/p>\n<p>Richtlinie 10 \u00fcbertr\u00e4gt das Prinzip auf das Frontend. \u201ePowered by\u201c-Hinweise und Links m\u00fcssen optional und standardm\u00e4\u00dfig ausgeschaltet sein, das Opt-in muss eine klar formulierte Wahl sein und kein Satz in den Nutzungsbedingungen, und das Plugin darf nicht von einem angezeigten Credit abh\u00e4ngen.<\/p>\n<p>Das folgende Plugin berechnet eine Lesezeit rein lokal und bietet zwei optionale Extras: w\u00f6chentliche Nutzungsstatistiken an einen Beispielserver und einen Link zur Plugin-Website. Beide Optionen stehen standardm\u00e4\u00dfig auf <code>false<\/code>. Ohne Zustimmung kehrt die Statistikfunktion zur\u00fcck, bevor eine Anfrage entsteht, und der Link erscheint erst nach dem zweiten Opt-in. Weil die HTTP-API im Standard-User-Agent die Adresse der Website mitsendet, setzt das Beispiel einen eigenen User-Agent.<\/p>\n<pre><code>&lt;?php\n\/**\n * Plugin Name:       Reading Time Badge\n * Description:       Shows the estimated reading time above posts. Usage statistics and a credit link are opt-in.\n * Version:           1.0.0\n * Requires at least: 6.5\n * Requires PHP:      7.4\n * License:           GPLv2 or later\n * License URI:       https:\/\/www.gnu.org\/licenses\/gpl-2.0.html\n * Text Domain:       reading-time-badge\n *\n * @package ReadingTimeBadge\n *\/\n\nif ( ! defined( 'ABSPATH' ) ) {\n\texit;\n}\n\ndefine( 'RTBADGE_VERSION', '1.0.0' );\ndefine( 'RTBADGE_STATS_URL', 'https:\/\/stats.example.com\/v1\/ping' );\n\n\/**\n * Returns the settings merged with defaults. Every outgoing feature is off by default.\n *\n * @return array\n *\/\nfunction rtbadge_get_settings() {\n\t$defaults = array(\n\t\t'share_stats' =&gt; false,\n\t\t'show_credit' =&gt; false,\n\t);\n\treturn wp_parse_args( (array) get_option( 'rtbadge_settings', array() ), $defaults );\n}\n\n\/**\n * Stores exactly two booleans, whatever the form sends.\n *\n * @param mixed $input Raw option value.\n * @return array\n *\/\nfunction rtbadge_sanitize_settings( $input ) {\n\t$input = is_array( $input ) ? $input : array();\n\treturn array(\n\t\t'share_stats' =&gt; ! empty( $input['share_stats'] ),\n\t\t'show_credit' =&gt; ! empty( $input['show_credit'] ),\n\t);\n}\n\nadd_action( 'admin_init', 'rtbadge_register_settings' );\n\n\/**\n * Registers the option with a sanitize callback.\n *\/\nfunction rtbadge_register_settings() {\n\tregister_setting(\n\t\t'rtbadge',\n\t\t'rtbadge_settings',\n\t\tarray(\n\t\t\t'type'              =&gt; 'array',\n\t\t\t'sanitize_callback' =&gt; 'rtbadge_sanitize_settings',\n\t\t\t'default'           =&gt; array(\n\t\t\t\t'share_stats' =&gt; false,\n\t\t\t\t'show_credit' =&gt; false,\n\t\t\t),\n\t\t)\n\t);\n}\n\nadd_action( 'admin_menu', 'rtbadge_add_settings_page' );\n\n\/**\n * Adds the settings page below Settings.\n *\/\nfunction rtbadge_add_settings_page() {\n\tadd_options_page(\n\t\t__( 'Reading Time Badge', 'reading-time-badge' ),\n\t\t__( 'Reading Time Badge', 'reading-time-badge' ),\n\t\t'manage_options',\n\t\t'rtbadge',\n\t\t'rtbadge_render_settings_page'\n\t);\n}\n\n\/**\n * Renders two unchecked-by-default opt-in checkboxes.\n *\/\nfunction rtbadge_render_settings_page() {\n\tif ( ! current_user_can( 'manage_options' ) ) {\n\t\treturn;\n\t}\n\t$settings = rtbadge_get_settings();\n\t?&gt;\n\t&lt;div class=\"wrap\"&gt;\n\t\t&lt;h1&gt;&lt;?php echo esc_html( get_admin_page_title() ); ?&gt;&lt;\/h1&gt;\n\t\t&lt;form action=\"options.php\" method=\"post\"&gt;\n\t\t\t&lt;?php settings_fields( 'rtbadge' ); ?&gt;\n\t\t\t&lt;p&gt;\n\t\t\t\t&lt;label&gt;\n\t\t\t\t\t&lt;input type=\"checkbox\" name=\"rtbadge_settings[share_stats]\" value=\"1\" &lt;?php checked( $settings['share_stats'] ); ?&gt;&gt;\n\t\t\t\t\t&lt;?php esc_html_e( 'Send usage statistics (plugin, WordPress and PHP version) to stats.example.com once a week.', 'reading-time-badge' ); ?&gt;\n\t\t\t\t&lt;\/label&gt;\n\t\t\t&lt;\/p&gt;\n\t\t\t&lt;p&gt;\n\t\t\t\t&lt;label&gt;\n\t\t\t\t\t&lt;input type=\"checkbox\" name=\"rtbadge_settings[show_credit]\" value=\"1\" &lt;?php checked( $settings['show_credit'] ); ?&gt;&gt;\n\t\t\t\t\t&lt;?php esc_html_e( 'Show a link to the plugin website next to the reading time on the public site.', 'reading-time-badge' ); ?&gt;\n\t\t\t\t&lt;\/label&gt;\n\t\t\t&lt;\/p&gt;\n\t\t\t&lt;?php submit_button(); ?&gt;\n\t\t&lt;\/form&gt;\n\t&lt;\/div&gt;\n\t&lt;?php\n}\n\nadd_action( 'admin_init', 'rtbadge_maybe_send_stats' );\n\n\/**\n * Sends usage statistics at most once a week, and only after opt-in.\n *\/\nfunction rtbadge_maybe_send_stats() {\n\t$settings = rtbadge_get_settings();\n\tif ( ! $settings['share_stats'] ) {\n\t\treturn; \/\/ No consent: no request at all.\n\t}\n\tif ( false !== get_transient( 'rtbadge_stats_sent' ) ) {\n\t\treturn;\n\t}\n\tset_transient( 'rtbadge_stats_sent', 1, WEEK_IN_SECONDS );\n\n\twp_remote_post(\n\t\tRTBADGE_STATS_URL,\n\t\tarray(\n\t\t\t'blocking'   =&gt; false,\n\t\t\t'timeout'    =&gt; 5,\n\t\t\t\/\/ The default user agent of the HTTP API contains the site URL; replace it.\n\t\t\t'user-agent' =&gt; 'reading-time-badge\/' . RTBADGE_VERSION,\n\t\t\t'body'       =&gt; array(\n\t\t\t\t'plugin_version' =&gt; RTBADGE_VERSION,\n\t\t\t\t'wp_version'     =&gt; get_bloginfo( 'version' ),\n\t\t\t\t'php_version'    =&gt; PHP_VERSION,\n\t\t\t),\n\t\t)\n\t);\n}\n\nadd_filter( 'the_content', 'rtbadge_prepend_reading_time' );\n\n\/**\n * Prepends the reading time. The credit link appears only after opt-in.\n *\n * @param string $content Post content.\n * @return string\n *\/\nfunction rtbadge_prepend_reading_time( $content ) {\n\tif ( ! is_singular( 'post' ) || ! in_the_loop() || ! is_main_query() ) {\n\t\treturn $content;\n\t}\n\t$words   = preg_split( '\/\\s+\/u', trim( wp_strip_all_tags( $content ) ), -1, PREG_SPLIT_NO_EMPTY );\n\t$minutes = max( 1, (int) ceil( count( $words ) \/ 200 ) ); \/\/ Assumes 200 words per minute.\n\n\t$badge = '&lt;p class=\"rtbadge\"&gt;' . esc_html(\n\t\tsprintf(\n\t\t\t\/* translators: %d: estimated reading time in minutes *\/\n\t\t\t_n( '%d minute read', '%d minutes read', $minutes, 'reading-time-badge' ),\n\t\t\t$minutes\n\t\t)\n\t);\n\n\t$settings = rtbadge_get_settings();\n\tif ( $settings['show_credit'] ) {\n\t\t$badge .= ' &amp;middot; &lt;a href=\"' . esc_url( 'https:\/\/example.com\/reading-time-badge\/' ) . '\"&gt;'\n\t\t\t. esc_html__( 'Reading Time Badge', 'reading-time-badge' ) . '&lt;\/a&gt;';\n\t}\n\n\treturn $badge . '&lt;\/p&gt;' . $content;\n}<\/code><\/pre>\n<p>Das Readme dokumentiert, was wann an wen geht. Genau diese Bestandteile verlangt \u201eCommon issues\u201c f\u00fcr externe Dienste: wann das Plugin den Dienst nutzt, einen Link zum Dienst und Links zu Nutzungsbedingungen oder Datenschutzerkl\u00e4rung. Die \u00dcberschrift im Beispiel ist ein Vorschlag, keine Vorgabe.<\/p>\n<pre><code>== Privacy and external services ==\n\nReading Time Badge calculates the reading time locally and works without any external service.\n\nIf the option \"Send usage statistics\" under Settings &gt; Reading Time Badge is enabled,\nthe plugin sends the plugin version, the WordPress version and the PHP version\nto stats.example.com once a week. The request contains no site URL, no user data\nand no content. As with any HTTP request, the server's IP address is visible to the service.\nThe option is disabled by default.\n\n* Service: https:\/\/stats.example.com\/\n* Terms of use: https:\/\/stats.example.com\/terms\/\n* Privacy policy: https:\/\/stats.example.com\/privacy\/<\/code><\/pre>\n<h2>Plugin-Name, Slug und Markenrecht<\/h2>\n<p>Der Slug ist die dauerhafte Adresse eines Plugins im Verzeichnis und im SVN. Laut Einreichungsseite entsteht er aus dem Header <code>Plugin Name<\/code>; ist der Name vergeben, wird eine Zahl angeh\u00e4ngt. Die Entwickler-FAQ erlaubt eine Slug-\u00c4nderung nach der Einreichung, nach der Freigabe keine mehr, w\u00e4hrend der angezeigte Name sp\u00e4ter \u00e4nderbar bleibt.<\/p>\n<p>Richtlinie 17 verbietet eine Marke oder den Namen eines anderen Projekts als einzigen oder ersten Begriff eines Slugs, sofern Inhaberschaft oder berechtigte Vertretung nicht nachgewiesen sind. Das Beispiel ist WordPress selbst: Die Marke geh\u00f6rt der WordPress Foundation, und die Regel gilt ausdr\u00fccklich auch f\u00fcr Plugin-Slugs. F\u00fcr alle anderen empfiehlt die Richtlinie die Form \u201eFunktion for Marke\u201c, besser noch einen eigenst\u00e4ndigen Namen. Richtlinie 16 erg\u00e4nzt, dass sich Slugs nicht reservieren lassen; eingereicht wird nur ein vollst\u00e4ndiges Plugin.<\/p>\n<table>\n<thead>\n<tr>\n<th>Header Plugin Name<\/th>\n<th>Slug<\/th>\n<th>Richtlinie 17<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>WordPress Delivery Dates<\/td>\n<td><code>wordpress-delivery-dates<\/code><\/td>\n<td>Beginnt mit gesch\u00fctztem Begriff, unzul\u00e4ssig<\/td>\n<\/tr>\n<tr>\n<td>WooCommerce Delivery Dates<\/td>\n<td><code>woocommerce-delivery-dates<\/code><\/td>\n<td>Nur f\u00fcr den Markeninhaber zul\u00e4ssig<\/td>\n<\/tr>\n<tr>\n<td>Delivery Dates for WooCommerce<\/td>\n<td><code>delivery-dates-for-woocommerce<\/code><\/td>\n<td>Entspricht \u201eFunktion for Marke\u201c<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Der Header der dritten Variante steht unten. \u201eCommon issues\u201c erwartet au\u00dferdem, dass die Hauptdatei nach dem Slug benannt ist und die Text Domain zu ihm passt.<\/p>\n<pre><code>&lt;?php\n\/**\n * Plugin Name: Delivery Dates for WooCommerce\n * Description: Lets customers pick a delivery date at checkout.\n * Version:     1.0.0\n * License:     GPLv2 or later\n * Text Domain: delivery-dates-for-woocommerce\n *\n * @package DeliveryDatesForWooCommerce\n *\/\n\n\/\/ Main file: delivery-dates-for-woocommerce\/delivery-dates-for-woocommerce.php\n\/\/ Slug proposed on submission: delivery-dates-for-woocommerce\n\nif ( ! defined( 'ABSPATH' ) ) {\n\texit;\n}<\/code><\/pre>\n<p>Auch das Konto hinter einer Einreichung z\u00e4hlt. Die FAQ erlaubt grunds\u00e4tzlich eine Einreichung zur gleichen Zeit, bis zu zehn bei mehr als einer Million aktiven Installationen, und sperrt Zweitkonten, die diese Grenze umgehen. Organisationen reichen \u00fcber ihr offizielles Konto ein. Richtlinie 9 verbietet Sockenpuppen-Konten und falsche Identit\u00e4ten zur Umgehung fr\u00fcherer Sanktionen. Seit dem 01.10.2024 ist Zwei-Faktor-Authentifizierung f\u00fcr alle Konten von Plugin-Inhabern und Committern Pflicht.<\/p>\n<h2>Vom ZIP-Upload bis zum ersten SVN-Commit<\/h2>\n<p>Am Anfang steht eine ZIP-Datei unter 10 MB, die sich \u00fcber \u201ePlugin hochladen\u201c installieren l\u00e4sst. Seit dem 01.10.2024 l\u00e4uft sie zuerst durch die Kategorie \u201ePlugin Repo\u201c von Plugin Check; ein Befund der Stufe Fehler blockiert die Einreichung bis zur Korrektur. Diesen Schritt beschreibt <span class=\"lw-artikel-geplant\">der eigene Beitrag zu Plugin Check<\/span>. Nach dem Upload folgen eine Best\u00e4tigungsmail und der Eintrag in die Warteschlange.<\/p>\n<p>Das manuelle Review pr\u00fcft Sicherheit, Kompatibilit\u00e4t, Richtlinientreue und Pr\u00e4sentation. Ohne Befund wird das Plugin freigegeben, sonst listet eine Mail die n\u00f6tigen \u00c4nderungen. Die FAQ bittet um Antworten im selben Mailverlauf und darum, nicht neu einzureichen. Ausnahme: Ein Review, das nach drei Monaten nicht abgeschlossen ist, wird abgelehnt; dann wird neu eingereicht und auf die alte Mail geantwortet.<\/p>\n<p>Nach der Freigabe erkl\u00e4rt eine Mail den Zugang zum Subversion-Repository unter <code>https:\/\/plugins.svn.wordpress.org\/<\/code> plus Slug, mit <code>trunk\/<\/code>, <code>tags\/<\/code> und <code>assets\/<\/code>. Beim Benutzernamen z\u00e4hlt die Gro\u00df- und Kleinschreibung, und in den Kontoeinstellungen l\u00e4sst sich ein eigenes SVN-Passwort setzen. Laut FAQ ist das Plugin live, sobald der Code committet ist. F\u00fcr sp\u00e4tere Releases gilt seit dem 05.06.2026 eine Wartezeit von derzeit sechs Stunden vor der Verteilung \u00fcber die Update-API; eine automatische Sicherheitspr\u00fcfung analysiert dabei die \u00c4nderungen und sperrt Releases mit hohem Risikowert.<\/p>\n<figure class=\"lw-diagram\">\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/wp-plugin-richtlinien-de.png?v=20260930\" width=\"1120\" height=\"580\" alt=\"Vom ZIP-Upload bis zum ersten SVN-Commit\"><figcaption>Weg einer neuen Einreichung ins Plugin-Verzeichnis von WordPress.org, mit den Schleifen nach Fehlern, Befunden und Fristablauf<\/figcaption><\/figure>\n<h3>Die Warteschlange am 28.09.2026<\/h3>\n<p>Der Wochenbericht vom 28.09.2026 auf make.wordpress.org\/updates nennt 4.598 Plugins in der Warteschlange. Nur 30 davon sind neu und unbearbeitet, 3.860 warten auf ihre Autoren, 475 auf einen Reviewer, und 233 sind als \u201ewartet auf Reviewer, Mail noch nicht verschickt\u201c markiert. Am 07.09.2026 standen 4.893 Plugins in der Warteschlange, davon 160 neu und unbearbeitet.<\/p>\n<p>Eine Wartezeit nennen die Berichte nicht. Die geringe Zahl unbearbeiteter Einreichungen spricht daf\u00fcr, dass das erste Review derzeit bald nach dem Upload folgt, doch das ist eine Deutung. Die offiziellen Zeitangaben weichen voneinander ab: Die Einreichungsseite spricht von einem bis zehn Tagen mit dem Ziel von f\u00fcnf Werktagen, die FAQ erwartet die Freigabe eines kleinen, fehlerfreien Plugins binnen vierzehn Tagen nach dem ersten Review. Wie stark die Lage schwankt, zeigt der Statusbericht vom Juni 2026: rund 1.050 Plugins Mitte April, wenige Wochen sp\u00e4ter nahezu null, im Mai ein Rekord von rund 700 Einreichungen pro Woche.<\/p>\n<h2>Grenzen und offene Punkte<\/h2>\n<p>Offizielle Daten dazu, welche Richtlinie am h\u00e4ufigsten zur Ablehnung f\u00fchrt, gibt es nicht; die Gruppierung ist keine Rangfolge. Die Warteschlangenzahlen beschreiben einen Zustand, keine Wartezeit, und die meisten Eintr\u00e4ge warten auf Autoren, nicht auf Reviewer. Die Angaben vom Juni und vom September z\u00e4hlen vermutlich Unterschiedliches, und eine \u00e4ltere Handbuchseite von 2022 nennt noch vierzehn Werktage.<\/p>\n<p>Ob die sechsst\u00fcndige Wartezeit auch f\u00fcr das erste Release eines frisch freigegebenen Plugins gilt, l\u00e4sst die Ank\u00fcndigung offen. Die Vorpr\u00fcfung mit Plugin Check ist so beschrieben, wie sie im Oktober 2024 angek\u00fcndigt wurde; ihr Umfang kann sich ge\u00e4ndert haben. Die Richtlinien werden regelm\u00e4\u00dfig \u00fcberarbeitet, ein erneuter Blick kurz vor der Einreichung lohnt sich. Das Beispiel-Plugin besteht die WordPress Coding Standards ohne Befund; Plugin Check 2.1.0 meldet unter WordPress 7.1.2 nur die fehlende <code>readme.txt<\/code> (<code>no_plugin_readme<\/code>), mit einer vollst\u00e4ndigen Readme um den gezeigten Abschnitt nichts mehr, Laufzeitpr\u00fcfungen eingeschlossen.<\/p>\n<div class=\"lw-faq\">\n<h2>Fragen und Antworten<\/h2>\n<h3>Darf ein Plugin im Verzeichnis f\u00fcr eine kostenpflichtige Pro-Version werben?<\/h3>\n<p>Ja, in Grenzen. Richtlinie 11 erlaubt Upgrade-Hinweise, wenn sie zum Kontext passen oder auf die Einstellungsseite des Plugins beschr\u00e4nkt sind; seitenweite Hinweise m\u00fcssen sich schlie\u00dfen lassen. Das kostenlose Plugin selbst muss vollst\u00e4ndig bleiben (Richtlinie 5), darf nicht behaupten, enthaltene Funktionen m\u00fcssten bezahlt werden (Richtlinie 9), und darf die Premium-Fassung nicht selbst herunterladen oder installieren (Richtlinie 8).<\/p>\n<h3>L\u00e4sst sich der Slug nach der Freigabe noch \u00e4ndern?<\/h3>\n<p>Nein. Laut Entwickler-FAQ ist nach der Einreichung genau eine \u00c4nderung des Slugs m\u00f6glich, nach der Freigabe keine mehr. Der angezeigte Name aus dem Header <code>Plugin Name<\/code> kann sich sp\u00e4ter noch \u00e4ndern. Die Wahl des Namens vor dem Upload entscheidet also \u00fcber die dauerhafte Adresse im Verzeichnis und im SVN.<\/p>\n<h3>Bedeutet ein fehlerfreier Plugin-Check-Lauf, dass das Plugin freigegeben wird?<\/h3>\n<p>Nein. Bei der Einreichung l\u00e4uft nur die Kategorie \u201ePlugin Repo\u201c, und nur Befunde der Stufe Fehler blockieren den Upload. Danach folgt das manuelle Review zu Sicherheit, Kompatibilit\u00e4t, Richtlinien und Pr\u00e4sentation. Mehrere Richtlinien betreffen Fragen, die eine automatische Pr\u00fcfung nur teilweise beurteilen kann, etwa das Gesch\u00e4ftsmodell, die Zustimmung vor externen Anfragen oder Marken im Namen.<\/p>\n<h3>Was passiert mit einer Einreichung, wenn die Review-Mail unbeantwortet bleibt?<\/h3>\n<p>Ist das Review nach drei Monaten nicht abgeschlossen, wird die Einreichung abgelehnt. Soll es danach weitergehen, wird das Plugin neu eingereicht und auf die alte Mail geantwortet. Wie verbreitet das Problem ist, zeigt der Jahresbericht 2025: Bei 38,7 Prozent der gepr\u00fcften Plugins kam keine Antwort der Autoren.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>Quellen<\/h2>\n<ul>\n<li><a href=\"https:\/\/developer.wordpress.org\/plugins\/wordpress-org\/detailed-plugin-guidelines\/\" target=\"_blank\" rel=\"noopener noreferrer\">Detailed Plugin Guidelines<\/a>, abgerufen am 29.09.2026<\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/plugins\/wordpress-org\/common-issues\/\" target=\"_blank\" rel=\"noopener noreferrer\">Common issues<\/a>, abgerufen am 29.09.2026<\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/plugins\/wordpress-org\/plugin-developer-faq\/\" target=\"_blank\" rel=\"noopener noreferrer\">Plugin Developer FAQ<\/a>, abgerufen am 29.09.2026<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/developers\/add\/\" target=\"_blank\" rel=\"noopener noreferrer\">Add your Plugin<\/a>, abgerufen am 29.09.2026<\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/plugins\/wordpress-org\/planning-submitting-and-maintaining-plugins\/\" target=\"_blank\" rel=\"noopener noreferrer\">Planning, Submitting, and Maintaining Plugins<\/a>, abgerufen am 29.09.2026<\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/plugins\/wordpress-org\/how-to-use-subversion\/\" target=\"_blank\" rel=\"noopener noreferrer\">How to Use Subversion<\/a>, abgerufen am 29.09.2026<\/li>\n<li><a href=\"https:\/\/make.wordpress.org\/plugins\/2024\/10\/01\/plugin-check-and-2fa-now-mandatory-for-new-plugin-submissions\/\" target=\"_blank\" rel=\"noopener noreferrer\">Plugin Check and 2FA Now Mandatory For New Plugin Submissions<\/a>, abgerufen am 29.09.2026<\/li>\n<li><a href=\"https:\/\/make.wordpress.org\/updates\/2026\/09\/28\/plugins-team-28-sep-2026\/\" target=\"_blank\" rel=\"noopener noreferrer\">Plugins Team: 28 Sep 2026<\/a>, abgerufen am 29.09.2026<\/li>\n<li><a href=\"https:\/\/make.wordpress.org\/updates\/2026\/09\/07\/plugins-team-7-sep-2026\/\" target=\"_blank\" rel=\"noopener noreferrer\">Plugins Team: 7 Sep 2026<\/a>, abgerufen am 29.09.2026<\/li>\n<li><a href=\"https:\/\/make.wordpress.org\/plugins\/2026\/06\/13\/update-on-the-status-of-the-team-june-2026\/\" target=\"_blank\" rel=\"noopener noreferrer\">Update on the status of the team \u2013 June 2026<\/a>, abgerufen am 29.09.2026<\/li>\n<li><a href=\"https:\/\/make.wordpress.org\/plugins\/2026\/01\/07\/a-year-in-the-plugins-team-2025\/\" target=\"_blank\" rel=\"noopener noreferrer\">A Year in the Plugins Team \u2013 2025<\/a>, abgerufen am 29.09.2026<\/li>\n<li><a href=\"https:\/\/make.wordpress.org\/plugins\/2026\/09\/09\/automated-security-review-for-plugin-releases\/\" target=\"_blank\" rel=\"noopener noreferrer\">Automated security review for plugin releases<\/a>, abgerufen am 29.09.2026<\/li>\n<li><a href=\"https:\/\/github.com\/WordPress\/wordpress-develop\/blob\/trunk\/src\/wp-includes\/class-wp-http.php\" target=\"_blank\" rel=\"noopener noreferrer\">class-wp-http.php (Standard-User-Agent)<\/a>, abgerufen am 29.09.2026<\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Die 18 Detailed Plugin Guidelines in vier Gruppen, mit Code f\u00fcr Opt-in und Credit-Links, den Regeln f\u00fcr den Slug und dem Weg vom ZIP-Upload bis zum ersten SVN-Commit.<\/p>\n","protected":false},"author":1,"featured_media":20883,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[92274,92759,92277],"class_list":["post-20852","post","type-post","status-publish","format-standard","hentry","category-wordpress-plugins-tricks-de","tag-php-de","tag-web-development-de","tag-wordpress-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>WordPress.org-Plugin-Richtlinien: woran Einreichungen scheitern | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Was das Plugin-Review von WordPress.org pr\u00fcft: GPL, Trialware, Opt-in vor Tracking, Credit-Links, Marken im Slug und die Warteschlange im September 2026.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/plugin-verzeichnis-richtlinien\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WordPress.org-Plugin-Richtlinien: woran Einreichungen scheitern | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Was das Plugin-Review von WordPress.org pr\u00fcft: GPL, Trialware, Opt-in vor Tracking, Credit-Links, Marken im Slug und die Warteschlange im September 2026.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/plugin-verzeichnis-richtlinien\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-03T11:37:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/fi-20852-plugin-verzeichnis-richtlinien.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/plugin-verzeichnis-richtlinien\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/plugin-verzeichnis-richtlinien\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"WordPress.org-Plugin-Richtlinien: woran Einreichungen scheitern\",\"datePublished\":\"2026-10-03T11:37:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/plugin-verzeichnis-richtlinien\\\/\"},\"wordCount\":2207,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/plugin-verzeichnis-richtlinien\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/fi-20852-plugin-verzeichnis-richtlinien.png\",\"keywords\":[\"PHP\",\"Web Development\",\"WordPress\"],\"articleSection\":[\"WordPress-Plugins &amp; Tricks\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/plugin-verzeichnis-richtlinien\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/plugin-verzeichnis-richtlinien\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/plugin-verzeichnis-richtlinien\\\/\",\"name\":\"WordPress.org-Plugin-Richtlinien: woran Einreichungen scheitern | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/plugin-verzeichnis-richtlinien\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/plugin-verzeichnis-richtlinien\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/fi-20852-plugin-verzeichnis-richtlinien.png\",\"datePublished\":\"2026-10-03T11:37:00+00:00\",\"description\":\"Was das Plugin-Review von WordPress.org pr\u00fcft: GPL, Trialware, Opt-in vor Tracking, Credit-Links, Marken im Slug und die Warteschlange im September 2026.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/plugin-verzeichnis-richtlinien\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/plugin-verzeichnis-richtlinien\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/plugin-verzeichnis-richtlinien\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/fi-20852-plugin-verzeichnis-richtlinien.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/fi-20852-plugin-verzeichnis-richtlinien.png\",\"width\":1200,\"height\":630,\"caption\":\"WordPress.org-Plugin-Richtlinien: woran Einreichungen scheitern\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/wordpress-plugins-tricks-de\\\/plugin-verzeichnis-richtlinien\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WordPress.org-Plugin-Richtlinien: woran Einreichungen scheitern\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"WordPress.org-Plugin-Richtlinien: woran Einreichungen scheitern | Lukas Wojcik","description":"Was das Plugin-Review von WordPress.org pr\u00fcft: GPL, Trialware, Opt-in vor Tracking, Credit-Links, Marken im Slug und die Warteschlange im September 2026.","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:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/plugin-verzeichnis-richtlinien\/","og_locale":"en_US","og_type":"article","og_title":"WordPress.org-Plugin-Richtlinien: woran Einreichungen scheitern | Lukas Wojcik","og_description":"Was das Plugin-Review von WordPress.org pr\u00fcft: GPL, Trialware, Opt-in vor Tracking, Credit-Links, Marken im Slug und die Warteschlange im September 2026.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/plugin-verzeichnis-richtlinien\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-10-03T11:37:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/fi-20852-plugin-verzeichnis-richtlinien.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/plugin-verzeichnis-richtlinien\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/plugin-verzeichnis-richtlinien\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"WordPress.org-Plugin-Richtlinien: woran Einreichungen scheitern","datePublished":"2026-10-03T11:37:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/plugin-verzeichnis-richtlinien\/"},"wordCount":2207,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/plugin-verzeichnis-richtlinien\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/fi-20852-plugin-verzeichnis-richtlinien.png","keywords":["PHP","Web Development","WordPress"],"articleSection":["WordPress-Plugins &amp; Tricks"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/plugin-verzeichnis-richtlinien\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/plugin-verzeichnis-richtlinien\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/plugin-verzeichnis-richtlinien\/","name":"WordPress.org-Plugin-Richtlinien: woran Einreichungen scheitern | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/plugin-verzeichnis-richtlinien\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/plugin-verzeichnis-richtlinien\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/fi-20852-plugin-verzeichnis-richtlinien.png","datePublished":"2026-10-03T11:37:00+00:00","description":"Was das Plugin-Review von WordPress.org pr\u00fcft: GPL, Trialware, Opt-in vor Tracking, Credit-Links, Marken im Slug und die Warteschlange im September 2026.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/plugin-verzeichnis-richtlinien\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/plugin-verzeichnis-richtlinien\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/plugin-verzeichnis-richtlinien\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/fi-20852-plugin-verzeichnis-richtlinien.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/fi-20852-plugin-verzeichnis-richtlinien.png","width":1200,"height":630,"caption":"WordPress.org-Plugin-Richtlinien: woran Einreichungen scheitern"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/wordpress-plugins-tricks-de\/plugin-verzeichnis-richtlinien\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"WordPress.org-Plugin-Richtlinien: woran Einreichungen scheitern"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/20852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=20852"}],"version-history":[{"count":1,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/20852\/revisions"}],"predecessor-version":[{"id":21064,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/20852\/revisions\/21064"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/20883"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=20852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=20852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=20852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}