MichiPedia

Mögliche Plugin Funktionen

  • für Dinge, die "immer" gemacht werden können bzw. sollen
  • modularisiert und über "require" Anweisungen einzeln ladbar
<?php

/* 
 * Useful functions from recommendations or plugins are collected in the /inc directory
 */
require get_theme_file_path('/inc/remove_emojis.php');

// REST API muss während der Bearbeitung AKTIV sein, da sonst der WP Block Editor 
// nicht mehr funktioniert. Daher besser lediglich Endpoints deaktivieren
require get_theme_file_path('/inc/deactivate_rest_endpoints_or_api.php');

require get_theme_file_path('/inc/remove_comments_from_html.php');

Emojis

<?php

require get_theme_file_path('/inc/remove_emojis.php');
Code
<?php
/**
 * Code komplett übernommen aus
 * 
 *        https://plugins.trac.wordpress.org/browser/disable-emojis/trunk/disable-emojis.php
 */

/*
Plugin Name: Disable Emojis (GDPR friendly)
Plugin URI: https://geek.hellyer.kiwi/plugins/disable-emojis/
Description: Disable Emojis (GDPR friendly)
Version: 1.7.6
Author: Ryan Hellyer
Author URI: https://geek.hellyer.kiwi/
License: GPL2

------------------------------------------------------------------------
Copyright Ryan Hellyer

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

*/

/**
 * Disable the emojis.
 */
function disable_emojis() {
    remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
    remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
    remove_action( 'wp_print_styles', 'print_emoji_styles' );
    remove_action( 'admin_print_styles', 'print_emoji_styles' );   
    remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
    remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );     
    remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
    add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' );
    add_filter( 'wp_resource_hints', 'disable_emojis_remove_dns_prefetch', 10, 2 );
}
add_action( 'init', 'disable_emojis' );

/**
 * Filter function used to remove the tinymce emoji plugin.
 * 
 * @param    array  $plugins
 * @return   array             Difference betwen the two arrays
 */
function disable_emojis_tinymce( $plugins ) {
    if ( is_array( $plugins ) ) {
        return array_diff( $plugins, array( 'wpemoji' ) );
    }
    
    return array();
}

/**
 * Remove emoji CDN hostname from DNS prefetching hints.
 * 
 * @param  array  $urls          URLs to print for resource hints.
 * @param  string $relation_type The relation type the URLs are printed for.
 * @return array                 Difference betwen the two arrays.
 */
function disable_emojis_remove_dns_prefetch( $urls, $relation_type ) {

    if ( 'dns-prefetch' == $relation_type ) {

        // Strip out any URLs referencing the WordPress.org emoji location
        $emoji_svg_url_bit = 'https://s.w.org/images/core/emoji/';
        foreach ( $urls as $key => $url ) {
            if ( strpos( $url, $emoji_svg_url_bit ) !== false ) {
                unset( $urls[$key] );
            }
        }
    }

    return $urls;
}

REST Api or REST Endpoints

<?php

// REST API muss während der Bearbeitung AKTIV sein, da sonst der WP Block Editor 
// nicht mehr funktioniert. Daher überlegen, was deaktiviert werden kann
// evtl. nur dediziert Endpoints deaktivieren

require get_theme_file_path('/inc/deactivate_rest_endpoints_or_api.php');
Code Beispiel
<?php

/*
 * Ermöglicht den REST Zugriff für bestimmte Rest-Endpoint oder die API nur im
 * eingeloggten Zustand. Wichtig: Zugriff nicht generell abschalten, da dann der WP Block Editor und
 * viele PlugIns nicht mehr funktionieren.
 * 
 * https://developer.wordpress.org/rest-api/reference/
 */

function deactivate_rest_endpoints($endpoints) {
    
    if ( ! is_user_logged_in() ) {

        $endpoints_to_remove = array(
            'users',
            'settings',
            /*'posts',*/
            /*'pages'*/
        );

        foreach ($endpoints_to_remove as $endpoint) {
            $base_endpoint = "/wp/v2/{$endpoint}";
            foreach ($endpoints as $maybe_endpoint => $object) {
                if (strpos($maybe_endpoint, $base_endpoint) !== false) {
                    unset($endpoints[$maybe_endpoint]);
                }
            }
        }
    }

    return $endpoints;
}
add_filter('rest_endpoints', 'deactivate_rest_endpoints');

/**
 * REST-API fuer externe User komplett abschalten.
 * 
 * Quelle:
 *     https://kulturbanause.de/blog/wordpress-rest-api-schnittstelle-deaktivieren-anpassen-und-individualisieren/
 * 
 * 'rest_authorization_required_code()' return code
 *          403: für eingeloggte User
 *          404: für nicht eingelogte User
 */
function deactivate_rest_for_externals($result) {
    if ( ! is_user_logged_in() ) {
        return new WP_Error( 'rest_API_cannot_access', array( 'status' => rest_authorization_required_code() ) );
    }
    return $result;
}
//add_filter('rest_authentication_errors', 'deactivate_rest_for_externals');

Kommentare im Quelltext (<!-- wp-xxxxx -->)

Kommentare im Quelltext

<?php

require get_theme_file_path('/inc/remove_comments_from_html.php');
Code
<?php

/*
 * Filtert HTML Kommentare 
 * 
 * https://fastwp.de/kommentare-quelltext-entfernen/
 */

function remove_comments($buffer) {
	$buffer = preg_replace('/<!--(.|\s)*?-->/', '', $buffer);
	return $buffer;
}
function buffer_start() {
	ob_start("remove_comments");
}
function buffer_end() {
	ob_end_flush();
}
add_action('get_header', 'buffer_start');
add_action('wp_footer', 'buffer_end');