Ein Plugin namens hurz

Wer sein WordPress um ein paar Codeschnipsel erweitern will, bekommt üblicherweise den Ratschlag den Code in der functions.php des Themes unterzubringen. Das finde ich sehr seltsam. Den beim nächsten Update des Themes sind die Änderungen wieder weg. Ich vermute, dass der Grund für den Ratschlag darin liegt, dass der Code des Themes direkt aus der Benutzeroberfläche von WordPress bearbeitet werden kann. Was ich übrigens für ein Sicherheitsrisiko halte und bei mir daher unterbinde.

Wesentlich geschickter ist es, das persönliche Customizing in einem Mini-Plugin unterzubringen. Bei mir ist das ein Unterverzeichnis mit dem Namen hurz⁣, in dem ein File mit dem Namen hurz.php liegt. Das kann man entweder direkt auf dem Server im wp-content/plugins anlegen oder als ZIP-Archiv via WordPress hochladen.

Bei mir hat es aktuell diesen Inhalt:

<?php
/**
 * @package hurz
 * @version 0.01
 */
/*
Plugin Name: hurz
Plugin URI: https://scaldra.net/
Description: Das Plugin speziell für mich
Author: Rolf Strathewerd
Version: 1.0.0
Author URI: https://rolf.strathewerd.de
*/


function wpb_total_posts()
{
    $total = wp_count_posts()->publish;
    return $total;
}

add_shortcode('total_posts', 'wpb_total_posts');


# Disabling the sitemap provider: users and taxonomies
add_filter( 'wp_sitemaps_add_provider', 'remove_sitemap_provider', 10, 2 );

function remove_sitemap_provider( $provider, $name ){

	$remove_providers = [ 'users', 'taxonomies' ];

	// disabling users archives
	if( in_array( $name, $remove_providers ) ){
		return false;
	}

	return $provider;
}

# Remove post type page from the Sitemap
add_filter( 'wp_sitemaps_post_types', 'wpremove_sitemaps_post_types' );

function wpremove_sitemaps_post_types( $post_types ){

	unset( $post_types['page'] );

	return $post_types;
}


function ping_bloggerrolle($post_id)
{
    $target_url = 'https://ping.bloggerrolle.de/';
    $post_data  = [
        'url' => get_site_url()
    ];
    $ch         = curl_init();
    curl_setopt($ch, CURLOPT_URL, $target_url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    if (curl_errno($ch)) {
        error_log('cURL-Fehler bei ping.bloggerrolle.de: ' . curl_error($ch));
    }
    curl_close($ch);
}

add_action('publish_post', 'ping_bloggerrolle');
Code-Sprache: PHP (php)

Wichtig dabei ist der Kommentar am Anfang mit dem Plugin-Namen. WordPress liest ihn ein und zeigt das Plugin an. Jetzt muss es nur noch aktiviert werden.

Bei mir sind da drei Sachen drin:

  • total_posts : Shortcode um die Anzahl der Posts auszugeben
  • remove_sitemap_provider und wpremove_sitemaps_post_types: gestalten die Sitemap nach meinem Geschmack um
  • ping_bloggerrolle: das eingebaute Ping wollte nicht, also gebe ich der bloggerrolle.de von Thomas Gigold so Bescheid (fliegt wieder raus, wenn ich herausfinde, warum mein WordPress nicht von alleine pingt)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert