<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="https://notiz.blog/wp-content/plugins/pretty-feeds/pretty-feed-v4.xsl" type="text/xsl" media="screen" ?>


<!--

	Feeds whisper secrets,
	In the RSS Club's embrace,
	Knowledge blooms in grace.

-->

<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:source="http://source.scripting.com/"
xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
>

<channel>
	<title>#Projekt26 &#8211; notizBlog</title>
	<atom:link href="https://notiz.blog/tag/projekt26/feed/" rel="self" type="application/rss+xml" />
	<link>https://notiz.blog</link>
	<description>a weblog mainly about the open, portable, interoperable, small, social, synaptic, semantic, structured, distributed, (re-)decentralized, independent, microformatted and federated social web</description>
	<lastBuildDate>Fri, 08 Mar 2024 15:00:28 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://notiz.blog/wp-content/uploads/2019/10/cropped-notizblog-icon-1-32x32.png</url>
	<title>#Projekt26 &#8211; notizBlog</title>
	<link>https://notiz.blog</link>
	<width>32</width>
	<height>32</height>
</image> 
<source:blogroll>https://reader.pfefferle.org/i/?a=opml&amp;get=c_2</source:blogroll>
<creativeCommons:license>https://creativecommons.org/licenses/by-sa/4.0/</creativeCommons:license>
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://switchboard.p3k.io/"/>
<atom:link rel="self" href="https://notiz.blog/tag/projekt26/feed/"/>
<atom:link rel="search" type="application/opensearchdescription+xml" title="Search notizBlog" href="https://notiz.blog/wp-api/opensearch/1.1/document" />	<item>
		<title>WPSR</title>
		<link>https://notiz.blog/2022/05/15/wpsr/</link>
					<comments>https://notiz.blog/2022/05/15/wpsr/#respond</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Sun, 15 May 2022 18:36:34 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[#Projekt26]]></category>
		<category><![CDATA[FediBlog]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP-FIG]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[PSR]]></category>
		<guid isPermaLink="false">https://notiz.blog/?p=22051</guid>

					<description><![CDATA[Auf dem CloudFest Hackathon im März, hab‘ ich mich ein wenig mit Alain Schlesser über WordPress und Plugin-Entwicklung unterhalten. Alain meinte, dass er, wenn es das Plugin hergibt und es zeitlich möglich ist, immer zuerst eine generische Library bauen und diese dann über ein WordPress-Plugin implementieren würde.]]></description>
										<content:encoded><![CDATA[
<p>Auf dem <a href="https://www.cloudfest.com/hackathon" data-type="URL" data-id="https://www.cloudfest.com/hackathon">CloudFest Hackathon</a> im März, hab&#8216; ich mich ein wenig mit <a href="https://www.alainschlesser.com/" data-type="URL" data-id="https://www.alainschlesser.com/">Alain Schlesser</a> über WordPress und Plugin-Entwicklung unterhalten. Alain meinte, dass er, wenn es das Plugin hergibt und es zeitlich möglich ist, immer zuerst eine generische Library bauen und diese dann über ein WordPress-Plugin implementieren würde.</p>



<p>Vor ein paar Tagen hab ich mich an unser Gespräch erinnert, weil ich mich (aus Gründen) wieder intensiver mit dem <a href="https://wordpress.org/plugins/activitypub/" data-type="URL" data-id="https://wordpress.org/plugins/activitypub/">ActivityPub-Plugin</a> beschäftigt habe. Wir hatten schon vor einem Jahr den Plan, eine <a href="https://github.com/landrok/activitypub/" data-type="URL" data-id="https://github.com/landrok/activitypub/">ActivityPub-Bibliothek</a> zu verwenden, um uns nicht mit dem Protokoll beschäftigen zu müssen, und uns so voll und ganz auf die WordPress Integration konzentrieren könn(t)en. Wir haben die Idee aber erstmal nicht weiter verfolgt, da die Bibliothek eine Reihe von schwergewichtigen <a href="https://github.com/landrok/activitypub/blob/master/composer.json#L9" data-type="URL" data-id="https://github.com/landrok/activitypub/blob/master/composer.json#L9">Third-Party-Libs</a> wie <a href="https://github.com/guzzle/guzzle" data-type="URL" data-id="https://github.com/guzzle/guzzle">Guzzle (HTTP-Client)</a>, <a href="https://github.com/Seldaek/monolog" data-type="URL" data-id="https://github.com/Seldaek/monolog">Monolog (Logger)</a> oder <a href="https://github.com/symfony/cache" data-type="URL" data-id="https://github.com/symfony/cache">Symfony Cache (Caching)</a> mit sich bringt. Für all diese Funktionen hat WordPress eigene Lösungen und wegen der Interoperabilität mit anderen Plugins, sollte man diese auch nutzen.</p>



<p>Bei der erneuten Evaluierung der ActivityPub-Bibliothek ist mir aufgefallen, dass sich Monolog, durch einen beliebigen PSR-3 kompatiblen Logger ersetzen lässt.</p>



<p>Kurze Erklärung zu <a href="https://www.php-fig.org/psr/" data-type="URL" data-id="https://www.php-fig.org/psr/">PSR</a>:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Eine PHP Standard Recommendation (PSR) ist eine PHP-Spezifikation, welche durch die PHP Framework Interop Group veröffentlicht wird. Ähnlich einem Java Specification Request in Java dient sie der Standardisierung von Programmierkonzepten. Ziel ist es die Interoperabilität von Komponenten zu ermöglichen und eine gemeinsame technische Basis zu schaffen oder bewährte Konzepte für einen guten Programmierstil sowie eine gute Testbarkeit von Komponenten umzusetzen. Verschiedene Frameworks wie z. B. die der TYPO3-Community, Symfony oder Zend implementieren hierbei PSR-Spezifikationen in einem selbst gewählten Umfang.</p>
<cite><a href="https://de.wikipedia.org/wiki/PHP_Standard_Recommendation">https://de.wikipedia.org/wiki/PHP_Standard_Recommendation</a></cite></blockquote>



<p><a href="https://www.php-fig.org/psr/psr-3/" data-type="URL" data-id="https://www.php-fig.org/psr/psr-3/">PSR-3</a> definiert ein standardisiertes Logger-Interface, welches (in unserem Beispiel) durch Monolog implementiert wird. Beim initialisieren des ActivityPub-Servers, lässt sich Monolog, durch einen alternativen Logger ersetzen, solange dieser auch PSR-3 konform ist.</p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-keyword">use</span> <span class="hljs-title">ActivityPhp</span>\<span class="hljs-title">Server</span>;

<span class="hljs-comment">// Create a server instance with no log output</span>
$server = <span class="hljs-keyword">new</span> Server(&#91;
    <span class="hljs-string">'logger'</span>   =&gt; &#91;
        <span class="hljs-string">'driver'</span> =&gt; <span class="hljs-string">'\Psr\Log\NullLogger'</span>
    ],
]);</code></span></pre>


<p>Also hab ich mir überlegt, wie so ein Logger für WordPress aussehen könnte und einen <a href="https://github.com/pfefferle/wp-psr-log" data-type="URL" data-id="https://github.com/pfefferle/wp-psr-log">PSR-3 kompatiblen Wrapper gebaut:</a></p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-keyword">namespace</span> <span class="hljs-title">WPPSR</span>\<span class="hljs-title">Log</span>;

<span class="hljs-keyword">use</span> <span class="hljs-title">Psr</span>\<span class="hljs-title">Log</span>\<span class="hljs-title">AbstractLogger</span>;

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">ErrorLogLogger</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">AbstractLogger</span> </span>{
    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">log</span><span class="hljs-params">( $level, $message, $context = array<span class="hljs-params">()</span> )</span> </span>{
        <span class="hljs-keyword">if</span> ( defined( <span class="hljs-string">'WP_DEBUG'</span> ) &amp;&amp; WP_DEBUG ) {
            <span class="hljs-keyword">if</span> ( defined( <span class="hljs-string">'WP_DEBUG_LOG'</span> ) &amp;&amp; WP_DEBUG_LOG ) {
                error_log(
                    sprintf(
                        <span class="hljs-string">'%s: %s. Details: %s'</span>,
                        $level,
                        trim( $message, <span class="hljs-string">'.'</span> ),
                        json_encode( $context )
                    )
                );
            }
        }
    }
}</code></span></pre>


<p>PSR definiert passenderweise auch Interfaces für HTTP-Clients, Request-/Response-Objekte und Caching. Für die Request-Library die in WordPress benutzt wird, gibt es sogar schon ein passendes Issue: <a href="https://github.com/WordPress/Requests/issues/320">https://github.com/WordPress/Requests/issues/320</a></p>



<p>Leider sind Caching und der HTTP-Client in der ActivityPub-Implementierung noch nicht austauschbar, obwohl beide benutzten Libraries PSR kompatibel sind. Das heißt ich muss zuerst evaluieren, wie viel Arbeit es ist, die ActivityPub-Lib anzupassen, um dann diverse Wrapper für das WordPress Caching und die Request-/Response-Classes zu schreiben&#8230;</p>



<p>Bzw. muss ich das wahrscheinlich nicht einmal selbst implementieren, da ich bei weitem nicht der Erste war, der diese Idee hatte:</p>



<ul class="wp-block-list">
<li><a href="https://packagist.org/packages/inpsyde/wpsr7">WPSR7</a> von Inpsyde</li>



<li><a href="https://github.com/felixarntz/wp-psr-cache" data-type="URL" data-id="https://github.com/felixarntz/wp-psr-cache">wp-psr-cache</a> von Felix Arntz</li>



<li><a href="https://github.com/thegallagher/wordpress-psr-cache">wordpress-psr-cache</a> von David Gallagher</li>



<li><a href="https://github.com/RebelCode/wp-http">wp-http</a> von RebelCode</li>



<li><a href="https://github.com/search?p=1&amp;q=wordpress+psr&amp;type=Repositories" data-type="URL" data-id="https://github.com/search?p=1&amp;q=wordpress+psr&amp;type=Repositories">uvm.</a></li>
</ul>



<p>WordPress tut sich immernoch schwer mit modernem PHP-Dependency-/Plugin-Management. Ersteres ist praktisch nicht vorhanden (<a href="https://developer.yoast.com/blog/composer-dependencies-in-wordpress-plugins/" data-type="URL" data-id="https://developer.yoast.com/blog/composer-dependencies-in-wordpress-plugins/">wird aber zumindest nicht verhindert</a>) und letzteres basiert immer noch auf einem Prozess in dem SVN eine tragende Rolle spielt. Aber mit PSR(-Wrappern) kann man das Problem schon ganz gut kompensieren 🙂</p>
<p>Hey there, RSS reader! You’re cool. Keep being awesome! 😎</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2022/05/15/wpsr/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Custom Post Type: Comment</title>
		<link>https://notiz.blog/2022/04/27/custom-post-type-comment/</link>
					<comments>https://notiz.blog/2022/04/27/custom-post-type-comment/#comments</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Wed, 27 Apr 2022 20:31:16 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[#Projekt26]]></category>
		<category><![CDATA[ActivityPub]]></category>
		<category><![CDATA[Comments]]></category>
		<category><![CDATA[Custom Post Type]]></category>
		<category><![CDATA[FediBlog]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Webmention]]></category>
		<guid isPermaLink="false">https://notiz.blog/?p=21211</guid>

					<description><![CDATA[Soziale Netzwerke haben die Art wie wir kommunizieren drastisch verändert. Wir reagieren selten mit Text, statt dessen liken, re-tweeten, sharen und faven wir was das Zeug hält. Und wenn wir mit Text reagieren, hat dieser spätestens seit Twitter, einen anderen Stellenwert. Ein Kommentar ist nicht länger ein Stück Text unter einem Artikel, ein Kommentar steht für sich alleine und wird durch die Plattform in den richtigen Kontext gesetzt, abhängig vom Einstiegspunkt des lesenden.]]></description>
										<content:encoded><![CDATA[<img width="700" height="363" src="https://notiz.blog/wp-content/uploads/2022/04/custom-post-type-comment-900x467.png" class="attachment-large size-large wp-post-image" alt="Ein Code-Beispiel wie Kommentare als Custom Post Type registriert werden können." decoding="async" srcset="https://notiz.blog/wp-content/uploads/2022/04/custom-post-type-comment-900x467.png 900w, https://notiz.blog/wp-content/uploads/2022/04/custom-post-type-comment-700x363.png 700w, https://notiz.blog/wp-content/uploads/2022/04/custom-post-type-comment-768x398.png 768w, https://notiz.blog/wp-content/uploads/2022/04/custom-post-type-comment.png 1076w" sizes="(max-width: 700px) 100vw, 700px" /> 
<p>Eine Leseempfehlung vorweg: &#8222;<a class="u-like u-like-of" href="https://wptavern.com/yes-comments-are-still-relevant-but-we-need-a-better-system" data-type="URL" data-id="https://wptavern.com/yes-comments-are-still-relevant-but-we-need-a-better-system">Yes, Comments Are Still Relevant, But We Need a Better System</a>&#8220; von Justin Tadlock auf WPTavern!</p>



<p>Soziale Netzwerke haben die Art wie wir kommunizieren drastisch verändert. Wir reagieren selten mit Text, statt dessen liken, re-tweeten, sharen und faven wir was das Zeug hält. Und wenn wir mit Text reagieren, hat dieser spätestens seit Twitter, einen anderen Stellenwert. Ein Kommentar ist nicht länger ein Stück Text unter einem Artikel, ein Kommentar steht für sich alleine und wird durch die Plattform in den richtigen Kontext gesetzt, abhängig vom Einstiegspunkt des lesenden.</p>



<div class="wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="600" height="523" sizes="(max-width: 350px) 100vw, 350px" src="https://notiz.blog/wp-content/uploads/2022/04/tweet-pfefferle.png" alt="" class="wp-image-21968"/><figcaption class="wp-element-caption">Mein Tweet, über meine Timeline, mit Depones Antwort</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="601" height="438" sizes="(max-width: 350px) 100vw, 350px" src="https://notiz.blog/wp-content/uploads/2022/04/tweet-depone.png" alt="" class="wp-image-21969"/><figcaption class="wp-element-caption">Daniels Antwort über seine Timeline, mit meinem Tweet als &#8222;Reply-Context&#8220;.</figcaption></figure>
</div>
</div>



<p>Die <a href="https://indieweb.org/" data-type="URL" data-id="https://indieweb.org/">IndieWeb Community</a> nennt das einen <a href="https://indieweb.org/reply-context" data-type="URL" data-id="https://indieweb.org/reply-context">Reply-Context</a>.</p>



<p>Diese Art der Darstellung und Handhabung von Reaktionen ist auch in dezentralen Netzwerken sehr populär. Mastodon ähnelt sehr, dem von Twitter gekauften Tweetdeck und imitiert auch dessen Darstellung. Die IndieWeb Bewegung geht sogar noch einen Schritt weiter und schafft mit <a href="https://indieweb.org/Webmention" data-type="URL" data-id="https://indieweb.org/Webmention">Webmentions</a> eine Möglichkeit über Blog-Posts dezentral zu kommentieren.</p>



<p>Die Kommentar-Funktion von WordPress ist dagegen bald 20 Jahre alt und dementsprechend antiquiert.</p>



<p><strong>Zeit das zu ändern!?!</strong></p>



<h2 class="wp-block-heading">Custom Post Type</h2>



<p>Ich arbeite seit knapp 15 Jahren daran, WordPress im IndieWeb und Fediverse zu verankern. Das große Problem ist dabei immer wieder die Persistenz und die Darstellung von Reaktionen. Ich habe mir viele Gedanken gemacht, wie man das Problem beheben und WordPress&#8216; Kommentar System modernisieren könnte, und ende immer an dem Punkt, wo ich versuche die Custom Post Type &#8211; Funktionalität für Kommentare nachzubauen.</p>



<p>Aber warum? Wenn ich eh alles nachbauen müsste, wäre es doch viel sinnvoller direkt Post-Types zu benutzen.</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">register_post_type( <span class="hljs-string">'comment'</span> );</code></span></pre>


<p>Aktuell bildet WordPress Posts, Pages, Attachments, Revisions, Navigation Menus, Custom CSS und Changesets über <a href="https://wordpress.org/support/article/post-types/" data-type="URL" data-id="https://wordpress.org/support/article/post-types/">Custom Post Types</a> ab&#8230; Warum also nicht auch Kommentare und andere Reaktionen?</p>



<p>Durch die Gleichsetzung der Datenstruktur von Posts und Comments, lassen sich diese einheitlich und dadurch einfacher verarbeiten und über z.B. APIs ausgeben. Gerade ActivityPub macht, wie Twitter, keinen Unterschied zwischen Kommentar, Antwort, Like, Boost oder initialem Text.</p>



<p>Die (Custom-)Post Tabelle bietet über <code>post_parent</code> schon jetzt die Möglichkeit komplexe Zusammenhänge wie z.B. auch Threaded-Comments abzubilden. Über den <code>post_status</code> ließen sich außerdem Kommentar-Status sowie eine Spam-Behandlung realisieren und <code>commentmeta</code> kann komplett in <code>postmeta</code> aufgehen.</p>



<p>Neben den klassichen Kommentaren lassen sich aber auch andere Reaktionen umsetzen.</p>



<h2 class="wp-block-heading">Like, Share, &#8230;</h2>



<p>Mit <a href="https://developer.wordpress.org/themes/functionality/post-formats/" data-type="URL" data-id="https://developer.wordpress.org/themes/functionality/post-formats/">Post-Formats</a> hat WordPress ein interessantes Konstrukt um Posts (über eine Taxonomy) weiter zu klassifizieren. Was für Posts das <code>aside</code>, <code>gallery</code>, <code>link</code> oder <code>video</code> Format ist, könnte für Comments das <code>Like</code>, <code>Share</code> oder <code>Bookmark</code> Format sein.</p>



<p>Themes könnten ihren Support wie folgt definieren:</p>


<pre class="wp-block-code"><span><code class="hljs language-php">add_theme_support( <span class="hljs-string">'comment-formats'</span>, <span class="hljs-keyword">array</span>( <span class="hljs-string">'like'</span>, <span class="hljs-string">'share'</span>, <span class="hljs-string">'bookmark'</span> ) );</code></span></pre>


<p>Und Plugins, wie Webmention oder ActicityPub, könnten neue Formate wie folgt registrieren:</p>


<pre class="wp-block-code"><span><code class="hljs language-php">register_comment_format( string $comment_format, <span class="hljs-keyword">array</span>|string $args = <span class="hljs-keyword">array</span>() )</code></span></pre>


<h2 class="wp-block-heading">Fazit</h2>



<p>Technisch spricht also nichts dagegen, Custom Post Types auch für Kommentare zu benutzen, man muss eigentlich nur noch alle Kommentar-Funktionen und -Klassen anpassen und fertig!</p>



<p>&#8230;und direkt über <code>wpdb</code> wird sicherlich eh niemand auf die Kommentar-Tabelle zugreifen! 😉</p>



<p>Spaß beiseite&#8230; Ich mag die Idee wirklich, hab aber bisher noch keinen ähnlichen Vorschlag im <a href="https://core.trac.wordpress.org/" data-type="URL" data-id="https://core.trac.wordpress.org/">Trac</a> gefunden&#8230; Ob das ein Zeichen ist?</p>
<p>Hey there, RSS reader! You’re one of a special few, choosing this old-school yet awesome way of staying informed. Kudos!</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2022/04/27/custom-post-type-comment/feed/</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
			</item>
		<item>
		<title>Inventur</title>
		<link>https://notiz.blog/2021/01/29/inventur/</link>
					<comments>https://notiz.blog/2021/01/29/inventur/#comments</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Fri, 29 Jan 2021 10:46:00 +0000</pubDate>
				<category><![CDATA[Open Web]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[#Projekt26]]></category>
		<category><![CDATA[ActivityPub]]></category>
		<category><![CDATA[FediBlog]]></category>
		<category><![CDATA[IndieWeb]]></category>
		<category><![CDATA[Plugin]]></category>
		<guid isPermaLink="false">https://notiz.blog/?p=21162</guid>

					<description><![CDATA[Mein erstes WordPress Plugin hab ich vor mehr als 14 Jahren veröffentlicht und über die Jahre sind eine ganze Menge, mehr oder weniger erfolgreiche, Plugins dazu gekommen&#8230; Zeit für eine Inventur 🙂 Viele der Plugins schreibe ich in erster Linie für mich selbst (eat your own dogfood), weshalb ich in den wenigesten Fällen über die [&#8230;]]]></description>
										<content:encoded><![CDATA[<img width="700" height="211" src="https://notiz.blog/wp-content/uploads/2021/02/wordpress-plugins-900x271.png" class="attachment-large size-large wp-post-image" alt="A list of all my WordPress Plugins" decoding="async" loading="lazy" srcset="https://notiz.blog/wp-content/uploads/2021/02/wordpress-plugins-900x271.png 900w, https://notiz.blog/wp-content/uploads/2021/02/wordpress-plugins-700x211.png 700w, https://notiz.blog/wp-content/uploads/2021/02/wordpress-plugins-768x231.png 768w, https://notiz.blog/wp-content/uploads/2021/02/wordpress-plugins.png 1501w" sizes="auto, (max-width: 700px) 100vw, 700px" /> 
<p>Mein erstes WordPress Plugin hab ich vor mehr als <a href="https://plugins.trac.wordpress.org/browser/simple-cocomments/trunk/simple_coco.php?rev=9246" data-type="URL" data-id="https://plugins.trac.wordpress.org/browser/simple-cocomments/trunk/simple_coco.php?rev=9246">14 Jahren veröffentlicht</a> und über die Jahre sind <a href="https://profiles.wordpress.org/pfefferle/#content-plugins" data-type="URL" data-id="https://profiles.wordpress.org/pfefferle/#content-plugins">eine ganze Menge, mehr oder weniger erfolgreiche, Plugins</a> dazu gekommen&#8230; Zeit für eine Inventur 🙂</p>



<p>Viele der Plugins schreibe ich in erster Linie für mich selbst (<a href="https://indieweb.org/selfdogfood" data-type="URL" data-id="https://indieweb.org/selfdogfood">eat your own dogfood</a>), weshalb ich in den wenigesten Fällen über die Plugins spreche oder sie bewerbe. Das, in Verbindung mit meinen eher spärlichen Beschreibungen, sorgt oft für eher zweistellige, maximal dreistellige Download-Zahlen. Wo die Zahlen höher sind, habe ich das Plugin meistens von Anderen übernommen (um die Weiterentwicklung zu gewährleisten) oder ich bin einfach &#8222;nur&#8220; Contributor.</p>



<p>Aber Schluss mit der falschen Bescheidenheit!</p>



<p>Selbst wenn ich die Plugins für mich baue, ist die Motivation natürlich größer, wenn sie auch von anderen benutzt werden. Also möchte ich euch hier ein paar meiner Plugins vorstellen.</p>



<h2 class="wp-block-heading">ActivityPub</h2>



<p><a href="https://www.w3.org/TR/activitypub/" data-type="URL" data-id="https://www.w3.org/TR/activitypub/">ActivityPub</a> ist ein, vom <a href="https://www.w3.org/" data-type="URL" data-id="https://www.w3.org/">W3C</a> veröffentlichtes, offenes, dezentrales Protokoll für soziale Netzwerke.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>The ActivityPub protocol is a decentralized social networking protocol based upon the [<a href="https://www.w3.org/TR/activitypub/#bib-ActivityStreams">ActivityStreams</a>] 2.0 data format. It provides a client to server API for creating, updating and deleting content, as well as a federated server to server API for delivering notifications and content.</p><cite>https://www.w3.org/TR/activitypub/</cite></blockquote>



<figure class="wp-block-image alignwide size-large"><img loading="lazy" decoding="async" width="765" height="360" src="https://notiz.blog/wp-content/uploads/2019/01/activitypub-flow.png" alt="Schaubild welches die Funktionsweise von ActivityPub zeigt" class="wp-image-17848" srcset="https://notiz.blog/wp-content/uploads/2019/01/activitypub-flow.png 765w, https://notiz.blog/wp-content/uploads/2019/01/activitypub-flow-700x329.png 700w" sizes="auto, (max-width: 765px) 100vw, 765px" /></figure>



<p>Es ermöglicht das dezentrale kommunizieren über Text, Bild, Video und Audio über ein simples Inbox/Outbox Prinzip.</p>



<h3 class="wp-block-heading">WebFinger Plugin</h3>



<p><a href="https://webfinger.net/" data-type="URL" data-id="https://webfinger.net/">WebFinger</a> ist kein fester Bestandteil von ActivityPub, wird aber von allen großen Netzwerken unterstützt und von Mastodon sogar verlangt. WebFinger ist eine Art Meta-Data System für alle möglichen URIs. Der gängige Identifier im Fediverse ist <code>@username@domain.tld</code>, das Plugin erlaubt aber auch die Author URL oder die Instant-Messaging Accounts eines Users, wenn diese unter der gleichen Domain erreichbar sind.</p>



<p>Mein Identifier ist Beispielsweise <code>pfefferle@notiz.blog</code> und die Meta-Daten können über folgenden API-Endpunkt abgerufen werden: <a href="https://notiz.blog/.well-known/webfinger?resource=acct%3Apfefferle%40notiz.blog">https://notiz.blog/.well-known/webfinger?resource=acct%3Apfefferle%40notiz.blog</a></p>



<ul class="wp-block-list"><li><a href="https://wordpress.org/plugins/webfinger/" data-type="URL" data-id="https://wordpress.org/plugins/webfinger/">WebFinger auf WordPress.org</a></li><li><a href="https://github.com/pfefferle/wordpress-webfinger" data-type="URL" data-id="https://github.com/pfefferle/wordpress-webfinger">WebFinger auf GitHub</a></li></ul>



<h3 class="wp-block-heading">NodeInfo Plugin</h3>



<p><a href="https://nodeinfo.diaspora.software/" data-type="URL" data-id="https://nodeinfo.diaspora.software/">NodeInfo</a> (<a href="https://github.com/jaywink/nodeinfo2" type="URL" id="https://git.feneas.org/jaywink/nodeinfo2">2</a>) ist auch kein fester Bestandteil von ActivityPub, wird aber auch von den Meisten Netzwerken unterstützt. NodeInfo stellt, wie der Name schon sagt, Infos über einen &#8222;Node&#8220; (Server) bereit. Dank NodeInfo gibt es eine ganze Reihe an Statistik-Seiten wie <a href="https://the-federation.info" data-type="URL" data-id="https://the-federation.info">the-federation.info</a>, die bei der Auswahl der <strong>richtigen</strong> Plattform bzw. des <strong>richtigen</strong> Servers helfen.</p>



<ul class="wp-block-list"><li><a href="https://wordpress.org/plugins/nodeinfo/" data-type="URL" data-id="https://wordpress.org/plugins/nodeinfo/">NodeInfo auf WordPress.org</a></li><li><a href="https://github.com/pfefferle/wordpress-nodeinfo" data-type="URL" data-id="https://github.com/pfefferle/wordpress-nodeinfo">NodeInfo auf GitHub</a></li></ul>



<h3 class="wp-block-heading">ActivityPub Plugin</h3>



<p>Das eigentliche ActivityPub Plugin macht WordPress zu einem (kleinen) Teil des <a href="https://en.wikipedia.org/wiki/Fediverse" data-type="URL" data-id="https://en.wikipedia.org/wiki/Fediverse">Fediverse</a>. User von <a href="https://notiz.blog/2020/12/31/activitypub-fuer-wordpress/" data-type="URL" data-id="https://notiz.blog/2020/12/31/activitypub-fuer-wordpress/">Mastodon, Pleroma, Friendi.ca oder Pixelfed</a> können dem Blog &#8222;folgen&#8220; und sehen ab dann alle neuen Blog-Posts in ihrer Timeline und können diese kommentieren. Das Plugin ist immernoch in einem frühen Stadium und bekommt sicherlich noch das ein oder andere Feature, im Fokus soll aber das Bloggen stehen. Wer ein vollwertiges, dezentrales, soziales Netzwerk möchte, sollte sich erstmal für eine der oben genannten Plattformen entscheiden.</p>



<ul class="wp-block-list"><li><a href="https://wordpress.org/plugins/activitypub/" data-type="URL" data-id="https://wordpress.org/plugins/activitypub/">ActivityPub auf WordPress.org</a></li><li><a href="https://github.com/pfefferle/wordpress-activitypub" data-type="URL" data-id="https://github.com/pfefferle/wordpress-activitypub">ActivityPub auf GitHub</a></li></ul>



<h2 class="wp-block-heading">IndieWeb</h2>



<div class="wp-block-image"><figure class="alignright size-large is-resized"><img loading="lazy" decoding="async" src="https://notiz.blog/wp-content/uploads/2021/02/indie-wapuu-with-text-598x660-1.png" alt="Der IndieWeb Wapuu" class="wp-image-21192" width="299" height="330"/></figure></div>



<p>Das <a href="https://indieweb.org/" data-type="URL" data-id="https://indieweb.org/">IndieWeb</a> ist eine <a href="https://de.wikipedia.org/wiki/Graswurzelbewegung" data-type="URL" data-id="https://de.wikipedia.org/wiki/Graswurzelbewegung">Grassroots</a> Bewegung mit dem Ziel, die eigene Webseite als zentralen Kommunikations-Hub zu nutzen.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>The <strong><dfn>IndieWeb</dfn></strong> is a community of individual personal websites, connected by simple standards, based on the <strong><a href="https://indieweb.org/principles">principles</a></strong> of <strong><a href="https://indieweb.org/personal-domain">owning your domain</a></strong>, using it as <strong><a href="https://indieweb.org/How_to_set_up_web_sign-in_on_your_own_domain">your primary identity</a></strong>, to <strong><a href="https://indieweb.org/POSSE">publish on your own site</a></strong> (optionally syndicate elsewhere), and <strong><a href="https://indieweb.org/ownyourdata">own your data</a></strong>.</p><cite>https://indieweb.org/IndieWeb</cite></blockquote>



<p>Mehr zum IndieWeb findet ihr <a href="https://notiz.blog/2013/06/18/the-rise-of-the-indieweb/" data-type="URL" data-id="https://notiz.blog/2013/06/18/the-rise-of-the-indieweb/">hier</a> oder unter dem Tag &#8222;<a href="https://notiz.blog/tag/indieweb/" data-type="URL" data-id="https://notiz.blog/tag/indieweb/">indieweb</a>&#8220; hier im Blog.</p>



<h3 class="wp-block-heading">IndieWeb Plugin</h3>



<p>Das IndieWeb Plugin hat nahezu keine Funktionalität, es ist vielmehr eine Art <em>Installer</em> um die IndieWeb Plugins über eine zentrale Stelle verwalten zu können. </p>



<p>Es gibt immer wieder Kritik am Aufbau des Plugins, bzw. kommt immer wieder die Frage auf, warum das Plugin nicht einfach die komplette Funktionalität der einzelnen Plugins beinhaltet. Meine Antwort darauf: Das IndieWeb ist mehr eine Idee als eine Spezifikation und es gibt verschiedene Möglichkeiten diese Idee mit WordPress umzusetzen. Für einen Usecase gibt es also oft verschiedene Lösungen, die von verschiedenen Personen entwickelt werden. Ein IndieWeb Plugin im Stil von ActivityPub ist in meinen Augen nicht möglich. Ich lasse mich aber gerne eines besseren belehren 😉</p>



<ul class="wp-block-list"><li><a href="https://wordpress.org/plugins/indieweb/" data-type="URL" data-id="https://wordpress.org/plugins/indieweb/">IndieWeb auf WordPress.org</a></li><li><a href="https://github.com/indieweb/wordpress-indieweb" data-type="URL" data-id="https://github.com/indieweb/wordpress-indieweb">IndieWeb auf GitHub</a></li></ul>



<h3 class="wp-block-heading">Webmention Plugin</h3>



<p>Webmentions sind eine moderne Alternative zu Pingbacks und Trackbacks. Im Gegensatz zu der eher unglücklichen Darstellung von Pingbacks (<code><code>[...] super, wie war nochmal der kontext, oder [...]</code></code>) versucht das IndieWeb (über Webmentions und <a href="https://notiz.blog/tag/microformats">Microformats</a>), den Sinn und die Art einer Verlinkung heraus zu bekommen um die Reaktion dann als Like, Bookmark oder vollwertiges Kommentar anzuzeigen.</p>



<p>Das Webmention Plugin implementiert <strong>aktuell</strong> nur den Kommunikations-Teil, für das Interpretieren der Websemantiken benötigt ihr zusätzlich das &#8222;Semantic Linkbacks&#8220; Plugin.</p>



<p>Mehr über Webmentions <a href="https://notiz.blog/2013/07/08/die-renaissance-des-pingbacks/" data-type="URL" data-id="https://notiz.blog/2013/07/08/die-renaissance-des-pingbacks/">hier</a> oder unter dem &#8222;<a href="https://notiz.blog/tag/webmention/" data-type="URL" data-id="https://notiz.blog/tag/webmention/">webmention</a>&#8220; Tag hier im Blog.</p>



<ul class="wp-block-list"><li><a href="https://wordpress.org/plugins/webmention/" data-type="URL" data-id="https://wordpress.org/plugins/webmention/">Webmention auf WordPress.org</a></li><li><a href="https://github.com/pfefferle/wordpress-webmention" data-type="URL" data-id="https://github.com/pfefferle/wordpress-webmention">Webmention auf GitHub</a></li></ul>



<h3 class="wp-block-heading">Semantic Linkbacks Plugin</h3>



<p>Wie oben beschrieben sorgt das <em>Semantic Linkbacks</em> Plugin für die hübsche Darstellung der Webmentions, Pingbacks und Trackbacks. Wir sind gerade dabei, die Funktionalität in das Webmention Plugin zu übertragen, deshalb hat das Plugin aber nur noch temporär Bedeutung.</p>



<ul class="wp-block-list"><li><a href="https://wordpress.org/plugins/semantic-linkbacks/" data-type="URL" data-id="https://wordpress.org/plugins/semantic-linkbacks/">Semantic Linkbacks auf WordPress.org</a></li><li><a href="https://github.com/pfefferle/wordpress-semantic-linkbacks" data-type="URL" data-id="https://github.com/pfefferle/wordpress-semantic-linkbacks">Semantic Linkbacks auf GitHub</a></li></ul>



<h3 class="wp-block-heading">WebSub Plugin</h3>



<p><a href="https://www.w3.org/TR/websub/" data-type="URL" data-id="https://www.w3.org/TR/websub/">WebSub</a> (formerly known as: <a href="https://notiz.blog/2010/01/13/are-we-there-yet/" data-type="URL" data-id="https://notiz.blog/2010/01/13/are-we-there-yet/">PubSubHubbub</a>) ist ein simples PubSub Protokoll für das Web. Es wurde ursprünglich entwickelt um updates von RSS und Atom Feeds in &#8222;echtzeit&#8220; zu konsumieren. Push statt pull. Die Restriktion auf RSS und Atom, wurde mit der aktuellen Version aufgehoben.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>WebSub provides a common mechanism for communication between publishers of any kind of Web content and their subscribers, based on HTTP web hooks. Subscription requests are relayed through hubs, which validate and verify the request. Hubs then distribute new and updated content to subscribers when it becomes available. WebSub was previously known as PubSubHubbub.</p><cite>https://www.w3.org/TR/websub/</cite></blockquote>



<p>Über das WebSub Plugin (ursprünglich entwickelt von <a href="https://twitter.com/joshfraz" data-type="URL" data-id="https://twitter.com/joshfraz">Josh Fraser</a>) kann man die Standard-Feeds von WordPress abonnieren. Das Plugin kann aber auch über andere Plugins und Themes erweitert werden.</p>



<ul class="wp-block-list"><li><a href="https://wordpress.org/plugins/pubsubhubbub/" data-type="URL" data-id="https://wordpress.org/plugins/pubsubhubbub/">WebSub auf WordPress.org</a></li><li><a href="https://github.com/pubsubhubbub/wordpress-pubsubhubbub" data-type="URL" data-id="https://github.com/pubsubhubbub/wordpress-pubsubhubbub">WebSub auf GitHub</a></li></ul>



<h3 class="wp-block-heading">MF2 Feed Plugin</h3>



<p>Das IndieWeb setzt im, Gegensatz zum Fediverse, nicht auf APIs, sondern auf Semantisches HTML:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>The idea is rather than publishing something twice (repeating yourself) with (x)HTML for browsers and XML for aggregators &#8211; you simply publish once using (x)HTML and allow the tools to take care of the rest.</p><cite><a href="http://microformats.org/wiki/dry">http://microformats.org/wiki/dry</a></cite></blockquote>



<div class="wp-block-image"><figure class="alignleft size-large"><img loading="lazy" decoding="async" width="100" height="100" src="https://notiz.blog/wp-content/uploads/2006/11/microformats.jpg" alt="Das Microformats Logo" class="wp-image-258"/></figure></div>



<p>In einer Welt in der jeder <em>WordPress Theme Developer</em> Wert auf Microformats, Schema.org oder Ähnliches achtet, funktioniert das Konzept super. Die Erfahrung zeigt aber, dass nur wenige Themes (<a href="https://notiz.blog/2019/08/16/the-first-microformats2-wp-theme/" data-type="URL" data-id="https://notiz.blog/2019/08/16/the-first-microformats2-wp-theme/">seit fast 9 Jahren eigentlich sogar nur ein Theme</a>) im <a href="https://wordpress.org/themes/search/microformats+v2/" data-type="URL" data-id="https://wordpress.org/themes/search/microformats+v2/">WordPress.org Repo Microformats2</a> unterstützt.</p>



<p>Ich habe viel herum experimentiert um Themes über ein <a href="https://wordpress.org/plugins/wp-uf2/" data-type="URL" data-id="https://wordpress.org/plugins/wp-uf2/">Plugin</a> mit den nötigen Semantiken zu erweitern, was aber, durch Output Escaping, zu <a href="https://github.com/indieweb/wordpress-uf2/issues/41" data-type="URL" data-id="https://github.com/indieweb/wordpress-uf2/issues/41">komischen Nebeneffekten</a> geführt hat (das alles aber nur der Vollständigkeit halber, das Thema ist eigentlich einen ganzen Artikel wert).</p>



<p>Letztendlich haben wir für WordPress ein Plugin gebaut, das einen Feed bereit stellt, der genau dem JSON Format entspricht, welches auch die Microformats Parser ausspucken. Das Webmention Plugin sucht also erst den pre-parsed Feed und versucht erst im zweiten Schritt, die Seite selbst zu parsen.</p>



<p>Ihr versteht die Ironie? Microformats(2) sind geschaffen worden um XML/JSON APIs abzulösen und weil das bei WordPress nicht wirklich dolle funktioniert bieten wir die Infos als JSON API an! 😀</p>



<ul class="wp-block-list"><li><a href="https://wordpress.org/plugins/mf2-feed/" data-type="URL" data-id="https://wordpress.org/plugins/mf2-feed/">MF2 feed auf WordPress.org</a></li><li><a href="https://github.com/indieweb/wordpress-mf2-feed" data-type="URL" data-id="https://github.com/indieweb/wordpress-mf2-feed">MF2 feed auf GitHub</a></li></ul>



<h2 class="wp-block-heading">Decisions, not Options</h2>



<p>Ich bin ein Freund von kleinen Plugins die nur einen spezifischen Anwendungsfall abdecken und im besten Fall auch vollkommen ohne Settings aus kommen. Frei nach dem Motto von WordPress:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>When making decisions these are the users we consider first. A great example of this consideration is software options. Every time you give a user an option, you are asking them to make a decision. When a user doesn’t care or understand the option this ultimately leads to frustration.</p><cite><a href="https://wordpress.org/about/philosophy/#decisions">https://wordpress.org/about/philosophy/#decisions</a></cite></blockquote>



<p>(<a href="https://wordpress.org/support/topic/it-does-absolutely-nothing/" data-type="URL" data-id="https://wordpress.org/support/topic/it-does-absolutely-nothing/">Ironischerweise führt aber gerade das Fehlen von Settings oft für Verwirrung</a> 😉 )</p>



<h3 class="wp-block-heading">OpenGraph Plugin</h3>



<p>Das <a href="https://ogp.me/" data-type="URL" data-id="https://ogp.me/">Open Graph Protokoll</a> wurde von Facebook entwickelt und hat einen ähnlichen Nutzen wie <a href="https://oembed.com/" data-type="URL" data-id="https://oembed.com/">oEmbed</a>:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>The <a href="https://ogp.me/">Open Graph protocol</a> enables any web page to become a rich object in a social graph. For instance, this is used on Facebook to allow any web page to have the same functionality as any other object on Facebook.</p><cite><a href="https://ogp.me">https://ogp.me</a></cite></blockquote>



<p>Es wird aktuell von fast jedem großen Netzwerk oder fast jeder Messaging App benutzt und sorgt dafür, dass ihr die kleinen hübschen Vorschausnippets seht, wenn ihr einen Link mit euren Freunden teilt.</p>



<p>Das OpenGraph Plugin wurde ursprünglich von <a href="https://willnorris.com/" data-type="URL" data-id="https://willnorris.com/">Will Norris</a> geschrieben und generiert alle notwendigen Meta-Tag Header. Keine Settings, keine Entscheidungen, aber mit wohl definierten Filtern zum erweitern.</p>



<ul class="wp-block-list"><li><a href="https://wordpress.org/plugins/opengraph/" data-type="URL" data-id="https://wordpress.org/plugins/opengraph/">OpenGraph auf WordPress.org</a></li><li><a href="https://github.com/willnorris/wordpress-opengraph" data-type="URL" data-id="https://github.com/willnorris/wordpress-opengraph">OpenGraph auf GitHub</a></li></ul>



<h3 class="wp-block-heading">Hum Plugin</h3>



<p>Hum generiert schöne, semantische Short-URLs für WordPress Posts und Pages. Das Plugin ist ursprünglich auch von Will Norris, integriert sich in die WordPress Core-Funktionen und kommt auch komplett ohne Settings aus.</p>



<p>Hum basiert auf <a href="http://tantek.pbworks.com/w/page/21743973/Whistle" data-type="URL" data-id="http://tantek.pbworks.com/w/page/21743973/Whistle">Whistle</a>&#8230;</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Whistle is an open source, <em><strong>algorithmically reversible, personal URL</strong></em> shortener.</p><cite><a href="http://tantek.pbworks.com/w/page/21743973/Whistle">http://tantek.pbworks.com/w/page/21743973/Whistle</a></cite></blockquote>



<p>&#8230;und <a href="http://tantek.pbworks.com/w/page/19402946/NewBase60">New Base 60</a>&#8230;</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>A base 60 numbering system using only ASCII numbers and letters.<br>or<br>a side effect of building a personal URL shortener</p><cite><a href="http://tantek.pbworks.com/w/page/19402946/NewBase60">http://tantek.pbworks.com/w/page/19402946/NewBase60</a></cite></blockquote>



<p>&#8230;zwei Specs von <a href="https://tantek.com/" data-type="URL" data-id="https://tantek.com/">Tantek Çelik</a>.</p>



<ul class="wp-block-list"><li><a href="https://wordpress.org/plugins/hum/" data-type="URL">Hum auf WordPress.org</a></li><li><a href="https://github.com/willnorris/wordpress-hum" data-type="URL" data-id="https://github.com/willnorris/wordpress-hum">Hum auf GitHub</a></li></ul>



<h3 class="wp-block-heading">Open Search Document Plugin</h3>



<p>Die OpenSearch Spezifikation bietet Möglichkeiten um die lokale Blog-Suche für Browser oder Suchmaschinen zugänglich zu machen.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>OpenSearch is a collection of simple formats for the sharing of search results.</p><cite><a href="https://github.com/dewitt/opensearch">https://github.com/dewitt/opensearch</a></cite></blockquote>



<p>Es gibt Integrationen für alle bekannten Browser wie z.B. <a href="https://www.chromium.org/tab-to-search">Chrome</a>, <a href="https://developer.apple.com/library/archive/releasenotes/General/WhatsNewInSafari/Articles/Safari_8_0.html">Safari</a>, <a href="https://developer.mozilla.org/de/docs/OpenSearch_Plugin_f%C3%BCr_Firefox_erstellen">Firefox</a> und <a href="https://support.microsoft.com/de-de/microsoft-edge/%C3%A4ndern-der-standardsuchmaschine-f863c519-5994-a8ed-6859-00fbc123b782">Microsoft Edge</a>.</p>



<p>Das Plugin wurde ursprünglich von <a href="https://profiles.wordpress.org/johnnoone/" data-type="URL" data-id="https://profiles.wordpress.org/johnnoone/">johnnoone</a> Entwickelt, es stellt eine XML Beschreibung der Suche und einen Endpunkt für Such-Vorschläge basierend auf Tags bereit.</p>



<p>Das wars auch schon 🙂</p>



<ul class="wp-block-list"><li><a href="https://wordpress.org/plugins/open-search-document/" data-type="URL" data-id="https://wordpress.org/plugins/open-search-document/">Open Search Document auf WordPress.org</a></li><li><a href="https://github.com/pfefferle/wordpress-open-search-document" data-type="URL" data-id="https://github.com/pfefferle/wordpress-open-search-document"></a><a href="https://wordpress.org/plugins/open-search-document/" data-type="URL" data-id="https://wordpress.org/plugins/open-search-document/">Open Search Document auf GitHub</a></li></ul>



<h2 class="wp-block-heading">Mehr?</h2>



<p>Natürlich gibt es noch mehr, das würde aber den Rahmen sprengen. Ich nutze WordPress gerne um neue <a href="https://github.com/pfefferle/wordpress-twtxt">Specs</a> und <a href="https://github.com/pfefferle/wordpress-hashtags" data-type="URL" data-id="https://github.com/pfefferle/wordpress-hashtags">Ideen</a> auszuprobieren und daraus entstehen meist kleine Plugins, die es oft nicht wert sind, auf WordPress.org veröffentlichen zu werden.</p>



<p>Ihr könnt aber gerne:</p>



<ul class="wp-block-list"><li>einen Blick auf mein <a href="https://profiles.wordpress.org/pfefferle/" data-type="URL" data-id="https://profiles.wordpress.org/pfefferle/">WordPress.org Profil</a> werfen</li><li>oder auf <a href="https://github.com/search?q=topic%3Awordpress-plugin+user%3Apfefferle+org%3Aindieweb+org%3Aapml+org%3Adiso+org%3Apubsubhubbub&amp;type=Repositories&amp;ref=advsearch&amp;l=&amp;l=" data-type="URL" data-id="https://github.com/search?q=topic%3Awordpress-plugin+user%3Apfefferle+org%3Aindieweb+org%3Aapml+org%3Adiso+org%3Apubsubhubbub&amp;type=Repositories&amp;ref=advsearch&amp;l=&amp;l=">GitHub suchen</a>.</li></ul>



<p>Ihr könnt fast alle Plugins auch bequem über Composer installieren und updaten.</p>



<p>Ich freue mich IMMER über Hilfe, also <strong>feel free to contribute</strong>!</p>
<p>Thanks for reading this post via RSS. RSS is great, and you’re great for using it. ♥️</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2021/01/29/inventur/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>Projekt 26</title>
		<link>https://notiz.blog/2021/01/14/projekt-26/</link>
					<comments>https://notiz.blog/2021/01/14/projekt-26/#comments</comments>
		
		<dc:creator><![CDATA[Matthias Pfefferle]]></dc:creator>
		<pubDate>Thu, 14 Jan 2021 08:43:00 +0000</pubDate>
				<category><![CDATA[Journal]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[#Projekt26]]></category>
		<category><![CDATA[FediBlog]]></category>
		<guid isPermaLink="false">https://notiz.blog/?p=21140</guid>

					<description><![CDATA[Torsten Landsiedel hatte 2019 die Idee zum #Projekt26: Alle zwei Wochen &#8222;muss&#8220; ein Blogartikel geschrieben werden. Alle zwei Wochen &#8222;muss&#8220; ein anderer Blogartikel kommentiert werden – das ist neu, aber wichtig, damit wir den Blog wieder als zentralen Ort für den Austausch nutzen und das nicht auf den Social Media Plattformen diverser Konzerne machen. Das [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Torsten Landsiedel <a href="https://torstenlandsiedel.de/2019/12/28/projekt26-jetzt-erst-recht/" data-type="URL" data-id="https://torstenlandsiedel.de/2019/12/28/projekt26-jetzt-erst-recht/">hatte 2019 die Idee</a> zum <a href="https://twitter.com/hashtag/project26" data-type="URL" data-id="https://twitter.com/hashtag/project26">#Projekt26</a>:</p>



<ul class="wp-block-list"><li>Alle <strong>zwei Wochen</strong> &#8222;<em>muss</em>&#8220; ein Blogartikel geschrieben werden.</li><li>Alle zwei Wochen &#8222;<em>muss</em>&#8220; ein anderer Blogartikel kommentiert werden – <em>das ist neu</em>, aber wichtig, damit wir den Blog wieder als zentralen Ort für den Austausch nutzen und das nicht auf den Social Media Plattformen diverser Konzerne machen.</li><li>Das Thema sollte WordPress sein, angrenzende Themengebiete, wie CSS, JavaScript, etc. gehen natürlich auch. Bonuspunkte gibt es für Artikel zum Thema Gutenberg.</li><li>Der Hashtag lautet <code><a href="https://notiz.blog/tag/projekt26/" data-type="URL" data-id="https://notiz.blog/tag/projekt26/">#projekt26</a></code> und sollte selbstredend bei der Bewerbung der Artikel genutzt werden.</li><li>Am liebsten sind mir echte, originäre Artikel, keine Zweiverwertungen, Listen, Linktipps, etc. – Faustformel könnte die Mindestlänge der VG Wort sein (1800 Zeichen).</li></ul>



<p>Ich mag den Fokus auf WordPress, auch wenn das ja hier eher nicht mein Haupt-Thema ist. Das gibt meinem Blog aber ein wenig Abwechslung und ich schaffe es vielleicht mal über die ganzen Plugins zu schreiben, die ich in den letzten Jahren so verbrochen habe&#8230; und da wären wir ja wieder beim Thema 😉</p>



<p>Neben dem regelmäßigen Bloggen, mag ich aber auch den Punkt mit dem Kommentieren. Was uns in den letzten Jahren immer mehr verloren gegangen ist, woran ironischerweise die <strong>SOZIALEN</strong> Netzwerke nicht ganz unschuldig sind, ist der Diskurs direkt im Blog. (Das ist übrigens mit einer der Gründe warum ich das <a href="https://wordpress.org/plugins/webmention/" data-type="URL" data-id="https://wordpress.org/plugins/webmention/">Webmention</a> und <a href="https://wordpress.org/plugins/activitypub/" data-type="URL" data-id="https://wordpress.org/plugins/activitypub/">ActivityPub Plugin</a> geschrieben habe.)</p>



<p>Da ich in den letzten Jahren hier eher weniger aktiv war, motiviert mich <s>die Idee</s> der selbstauferlegte Druck hoffentlich, in diesem Jahr regelmäßiger zu schreiben.</p>



<p>&#8230;und dass ich diesen Artikel statt in Kalenderwoche 1 oder 2, erst jetzt schreibe, bestärkt mich nur noch mehr in dieser Ansicht!</p>



<p>(zum Glück kann man Artikel zurück datieren 😀 )</p>
<p>Hey there, RSS reader! You’re one of a special few, choosing this old-school yet awesome way of staying informed. Kudos!</p>]]></content:encoded>
					
					<wfw:commentRss>https://notiz.blog/2021/01/14/projekt-26/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
	</channel>
</rss>
