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');