<?xml version="1.0" encoding="UTF-8"?><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/"
	>

<channel>
	<title>Demo Archiv - Homepage nach Preis - Webseite erstellen lassen</title>
	<atom:link href="https://homepage-nach-preis.de/wort/demo/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>★ Responsive Webdesigner Homepage erstellen lassen, bereits ab 299 Euro professionelle Webseite. ✓ Google-Optimiert ✓ Mobil-Optimiert &#124; Webdesign &#38; Seo</description>
	<lastBuildDate>Thu, 11 Apr 2024 07:04:27 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://homepage-nach-preis.de/wp-content/uploads/2021/02/cropped-icon-150x150.png</url>
	<title>Demo Archiv - Homepage nach Preis - Webseite erstellen lassen</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>HNP Empty Plugin &#8211; WordPress Demo Code</title>
		<link>https://homepage-nach-preis.de/2024/04/10/hnp-empty-plugin-wordpress-demo-code/</link>
					<comments>https://homepage-nach-preis.de/2024/04/10/hnp-empty-plugin-wordpress-demo-code/#respond</comments>
		
		<dc:creator><![CDATA[Homepage-nach-Preis]]></dc:creator>
		<pubDate>Wed, 10 Apr 2024 13:54:30 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Wordpress Code]]></category>
		<category><![CDATA[Beispiel]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[Empty]]></category>
		<category><![CDATA[Leeres]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://homepage-nach-preis.de/?p=8186</guid>

					<description><![CDATA[<p>Das HNP Empty Plugin ist ein einfaches Demo-Plugin für WordPress, das entwickelt wurde, um grundlegende Funktionen eines Plugins zu demonstrieren. Es zeigt, wie man Styles und Skripte sowohl im Frontend als auch im Backend von WordPress einbindet. Außerdem bietet es eine Benutzeroberfläche zur Verwaltung von Plugin-Optionen über das WordPress-Dashboard. Der Plugin-Demo Code besitzt alle wichtigen Sicherheitsoptionen und Code-Qualitätsanforderungen, damit ein Plugin im offiziellen WordPress Verzeichnis aufgenommen wird. Zudem Funktionen, welche im Jahr 2024 auf dem neuesten Stand sind. Somit eine gute Grundlage für WordPress-Plugin-Entwickler. Geteste Kompatibilität: WordPress 6.5.2 und PHP 8.3. Das Plugin wird aber auch mit neueren und älteren PHP und WordPress Versionen kompatibel sein. Features: Frontend und Backend Styling: Das Plugin fügt sowohl dem Frontend als auch dem Backend von WordPress benutzerdefinierte CSS- und JavaScript-Dateien hinzu, um das Erscheinungsbild anzupassen. Plugin-Optionen: Es bietet eine einfache Möglichkeit, Plugin-Optionen über das WordPress-Dashboard zu konfigurieren, einschließlich Textfelder, Zahlenfelder, Farbwähler, Dropdown-Listen und Checkboxen. Shortcode: Das Plugin stellt einen Shortcode bereit, mit dem Benutzer die konfigurierten Optionen auf beliebigen Seiten oder Beiträgen anzeigen können. Sicherheitsmaßnahmen: Das Plugin implementiert Sicherheitsmaßnahmen wie Nonce-Überprüfung, um unerwünschte Zugriffe auf die Plugin-Einstellungen zu verhindern. &#160; Plugin-Download: [sdm_download id=&#8221;8187&#8243; fancy=&#8221;0&#8243;] Github: https://github.com/HNP-Christopher-Rohde/hnp_empty_wordpress_plugin Quellcode: &#60;?php /* Plugin Name: HNP Empty....</p>
<p>Der Beitrag <a rel="nofollow" href="https://homepage-nach-preis.de/2024/04/10/hnp-empty-plugin-wordpress-demo-code/">HNP Empty Plugin &#8211; WordPress Demo Code</a> erschien zuerst auf <a rel="nofollow" href="https://homepage-nach-preis.de">Homepage nach Preis - Webseite erstellen lassen</a>. Geschrieben von <a rel="nofollow" href="https://homepage-nach-preis.de/author/homepageadmin/">Homepage-nach-Preis</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Das HNP Empty Plugin ist ein einfaches Demo-Plugin für WordPress, das entwickelt wurde, um grundlegende Funktionen eines Plugins zu demonstrieren. Es zeigt, wie man Styles und Skripte sowohl im Frontend als auch im Backend von WordPress einbindet. Außerdem bietet es eine Benutzeroberfläche zur Verwaltung von Plugin-Optionen über das WordPress-Dashboard. Der Plugin-Demo Code besitzt alle wichtigen Sicherheitsoptionen und Code-Qualitätsanforderungen, damit ein Plugin im offiziellen WordPress Verzeichnis aufgenommen wird. Zudem Funktionen, welche im Jahr 2024 auf dem neuesten Stand sind. Somit eine gute Grundlage für WordPress-Plugin-Entwickler. Geteste Kompatibilität: WordPress 6.5.2 und PHP 8.3. Das Plugin wird aber auch mit neueren und älteren PHP und WordPress Versionen kompatibel sein. </p>
<p><strong>Features:</strong></p>
<ul>
<li><strong>Frontend und Backend Styling:</strong> Das Plugin fügt sowohl dem Frontend als auch dem Backend von WordPress benutzerdefinierte CSS- und JavaScript-Dateien hinzu, um das Erscheinungsbild anzupassen.</li>
<li><strong>Plugin-Optionen:</strong> Es bietet eine einfache Möglichkeit, Plugin-Optionen über das WordPress-Dashboard zu konfigurieren, einschließlich Textfelder, Zahlenfelder, Farbwähler, Dropdown-Listen und Checkboxen.</li>
<li><strong>Shortcode:</strong> Das Plugin stellt einen Shortcode bereit, mit dem Benutzer die konfigurierten Optionen auf beliebigen Seiten oder Beiträgen anzeigen können.</li>
<li><strong>Sicherheitsmaßnahmen:</strong> Das Plugin implementiert Sicherheitsmaßnahmen wie Nonce-Überprüfung, um unerwünschte Zugriffe auf die Plugin-Einstellungen zu verhindern.</li>
</ul>
<p>&nbsp;</p>
<p><strong>Plugin-Download:</strong> [sdm_download id=&#8221;8187&#8243; fancy=&#8221;0&#8243;]<br />
<strong>Github:</strong> <a href="https://github.com/HNP-Christopher-Rohde/hnp_empty_wordpress_plugin" target="_blank" rel="nofollow noopener">https://github.com/HNP-Christopher-Rohde/hnp_empty_wordpress_plugin</a><br />
<strong>Quellcode:</strong></p>
<pre>&lt;?php
/*
  Plugin Name: HNP Empty Plugin
  Description: Creates a Demo Plugin in WordPress
  Version: 2.0
  Author: HNP C.R. 
  Author URI: https://homepage-nach-preis.de/
  License: GPLv3
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
 */

// Security check to prevent direct access to the plugin file
defined('ABSPATH') or die('No script kiddies please!');

// Function to enqueue the Frontend CSS and JS
function hnp_empty_plugin_frontend_scripts() {
    // Define a version number
    $version = '2.0';

    // Check if CSS is not already enqueued
    if (!wp_style_is('hnp_empty_plugin_frontend-css')) {
        // Enqueue CSS with the defined version
        wp_enqueue_style('hnp_empty_plugin_frontend-css', plugin_dir_url(__FILE__) . '/frontend/css/hnp_empty_plugin_frontend.css', array(), $version);
    }

    // Check if JavaScript is not already enqueued
    if (!wp_script_is('hnp_empty_plugin_frontend-js')) {
        // Enqueue JavaScript with the defined version
        wp_enqueue_script('hnp_empty_plugin_frontend-js', plugin_dir_url(__FILE__) . '/frontend/js/hnp_empty_plugin_frontend.js', array(), $version, true);
    }
}
add_action('wp_enqueue_scripts', 'hnp_empty_plugin_frontend_scripts');

// Function to enqueue Backend CSS and JS
function hnp_empty_plugin_backend_scripts() {
    // Define a version number
    $version = '2.0';

    // Check if CSS is not already enqueued
    if (!wp_style_is('hnp_empty_plugin_backend-css')) {
        // Enqueue CSS with the defined version
        wp_enqueue_style('hnp_empty_plugin_backend-css', plugin_dir_url(__FILE__) . '/backend/css/hnp_empty_plugin_backend.css', array(), $version);
    }

    // Check if JavaScript is not already enqueued
    if (!wp_script_is('hnp_empty_plugin_backend-js')) {
        // Enqueue JavaScript with the defined version
        wp_enqueue_script('hnp_empty_plugin_backend-js', plugin_dir_url(__FILE__) . '/backend/js/hnp_empty_plugin_backend.js', array(), $version, true);
    }
}
add_action('admin_enqueue_scripts', 'hnp_empty_plugin_backend_scripts');

// Function for Test - with load Options and Fallback
function hnp_empty_plugin_echo_func() {
    // Get option values
    $name = get_option('hnp_empty_plugin_name_field', 'Name');
    $number = get_option('hnp_empty_plugin_number_field', '12');
    $color = get_option('hnp_empty_plugin_color_field', '#ff0000');
    $description = get_option('hnp_empty_plugin_description_field', 'Im a Desc Field');
    $dropdown = get_option('hnp_empty_plugin_dropdown_field', 'option1');
    $checkbox = get_option('hnp_empty_plugin_checkbox_field', 0);

    // Echo option values
    echo '&lt;p&gt;Name Field: ' . esc_html($name) . '&lt;/p&gt;';
    echo '&lt;p&gt;Number Field: ' . esc_html($number) . '&lt;/p&gt;';
    echo '&lt;p&gt;Color Field: ' . esc_html($color) . '&lt;/p&gt;';
    echo '&lt;p&gt;Description Field: ' . esc_html($description) . '&lt;/p&gt;';
    echo '&lt;p&gt;Dropdown Field: ' . esc_html($dropdown) . '&lt;/p&gt;';
    echo '&lt;p&gt;Checkbox Field: ' . ($checkbox ? 'Enabled' : 'Disabled') . '&lt;/p&gt;';
}
add_shortcode('hnp_empty_plugin_echo_func', 'hnp_empty_plugin_echo_func');


// Function to add plugin options to the main menu
function hnp_empty_plugin_add_plugin_options_page() {
    // Check permission
    if (current_user_can('manage_options')) {
        add_menu_page(
            'HNP Empty Plugin Settings',
            'HNP Empty Plugin',
            'manage_options',
            'hnp-empty-plugin-settings',
            'hnp_empty_plugin_render_plugin_options_page',
            plugin_dir_url(__FILE__) . 'img/hnp-favi.png' 
        );
    }
}
add_action('admin_menu', 'hnp_empty_plugin_add_plugin_options_page');


// Function to render plugin options page
function hnp_empty_plugin_render_plugin_options_page() {
    ?&gt;
    &lt;div class="wrap hnp-empty-plugin-settings"&gt;
        &lt;h1&gt;HNP Empty Plugin Settings&lt;/h1&gt;
        &lt;form method="post" action="options.php"&gt;
            &lt;?php settings_fields('hnp_empty_plugin_settings_group'); ?&gt;
            &lt;?php do_settings_sections('hnp-empty-plugin-settings'); ?&gt;
            
            &lt;?php 
                // Add nonce
                wp_nonce_field('hnp_empty_plugin_settings_nonce', 'hnp_empty_plugin_settings_nonce'); 
            ?&gt;
            
            &lt;?php submit_button(); ?&gt;
        &lt;/form&gt;
    &lt;/div&gt;
    &lt;?php
}

// Function to register plugin options
function hnp_empty_plugin_register_plugin_options() {
    // Name
    add_settings_section(
        'hnp_empty_plugin_name_section',
        'Demo',
        'hnp_empty_plugin_demo_section_callback',
        'hnp-empty-plugin-settings'
    );

    // Name
    add_settings_field(
        'hnp_empty_plugin_name_field', 
        'Name Field', 
        'hnp_empty_plugin_name_field_callback', 
        'hnp-empty-plugin-settings', 
        'hnp_empty_plugin_name_section' 
    );

    // Number
    add_settings_field(
        'hnp_empty_plugin_number_field',
        'Number Field',
        'hnp_empty_plugin_number_field_callback',
        'hnp-empty-plugin-settings',
        'hnp_empty_plugin_name_section'
    );

    // Color
    add_settings_field(
        'hnp_empty_plugin_color_field',
        'Color Field',
        'hnp_empty_plugin_color_field_callback',
        'hnp-empty-plugin-settings',
        'hnp_empty_plugin_name_section'
    );

    // Description
    add_settings_field(
        'hnp_empty_plugin_description_field',
        'Description Field',
        'hnp_empty_plugin_description_field_callback',
        'hnp-empty-plugin-settings',
        'hnp_empty_plugin_name_section'
    );

    // Dropdown
    add_settings_field(
        'hnp_empty_plugin_dropdown_field',
        'Dropdown Field',
        'hnp_empty_plugin_dropdown_field_callback',
        'hnp-empty-plugin-settings',
        'hnp_empty_plugin_name_section'
    );

    // Checkbox
    add_settings_field(
        'hnp_empty_plugin_checkbox_field',
        'Checkbox Field',
        'hnp_empty_plugin_checkbox_field_callback',
        'hnp-empty-plugin-settings',
        'hnp_empty_plugin_name_section'
    );
}
add_action('admin_init', 'hnp_empty_plugin_register_plugin_options');
</pre>
<pre>
// Callback function for demo section
function hnp_empty_plugin_demo_section_callback() {
    echo 'This a Demo Plugin. Frontend-Shortcode: &amp;#x5B;hnp_empty_plugin_echo_func]&lt;/p&gt;';
}

// Callback function for name field
function hnp_empty_plugin_name_field_callback() {
    $value = get_option('hnp_empty_plugin_name_field', 'Name'); // Fallback value is 'Name'
    echo '&lt;input type="text" name="hnp_empty_plugin_name_field" value="' . esc_attr($value) . '" /&gt;';
}

// Callback functions for number fields
function hnp_empty_plugin_number_field_callback() {
    $value = get_option('hnp_empty_plugin_number_field', '12'); // Fallback value is '12'
    echo '&lt;input type="number" name="hnp_empty_plugin_number_field" value="' . esc_attr($value) . '" /&gt;';
}

// Callback function for Color Field
function hnp_empty_plugin_color_field_callback() {
    $value = get_option('hnp_empty_plugin_color_field', '#ff0000'); // Fallback value is red color
    echo '&lt;input type="color" name="hnp_empty_plugin_color_field" value="' . esc_attr($value) . '" /&gt;';
}

// Callback function for Description Field
function hnp_empty_plugin_description_field_callback() {
    $value = get_option('hnp_empty_plugin_description_field', 'Im a Desc Field'); // Fallback value is 'Im a Desc Field'
    echo '&lt;textarea name="hnp_empty_plugin_description_field"&gt;' . esc_html($value) . '&lt;/textarea&gt;';
}

// Callback function for dropdown field
function hnp_empty_plugin_dropdown_field_callback() {
    $value = get_option('hnp_empty_plugin_dropdown_field', 'option1'); // Fallback value is 'option1'
    ?&gt;
    &lt;select name="hnp_empty_plugin_dropdown_field"&gt;
        &lt;option value="option1" &lt;?php selected($value, 'option1'); ?&gt;&gt;Option 1&lt;/option&gt;
        &lt;option value="option2" &lt;?php selected($value, 'option2'); ?&gt;&gt;Option 2&lt;/option&gt;
        &lt;option value="option3" &lt;?php selected($value, 'option3'); ?&gt;&gt;Option 3&lt;/option&gt;
    &lt;/select&gt;
    &lt;?php
}

// Callback function for checkbox field
function hnp_empty_plugin_checkbox_field_callback() {
    $value = get_option('hnp_empty_plugin_checkbox_field', 0); // Fallback value is 0 (not checked)
    ?&gt;
    &lt;label for="hnp_empty_plugin_checkbox_field"&gt;
        &lt;input type="checkbox" name="hnp_empty_plugin_checkbox_field" id="hnp_empty_plugin_checkbox_field" value="1" &lt;?php checked($value, 1); ?&gt;&gt;
        Enable Checkbox
    &lt;/label&gt;
    &lt;?php
}

// Security measures: Nonce verification and save options
function hnp_empty_plugin_register_security_options() {
    // Check if the current page is our plugin options page
    if (isset($_POST['option_page']) &amp;&amp; $_POST['option_page'] == 'hnp_empty_plugin_settings_group') {
        // Check if the nonce is set and valid
        if (!isset($_POST['hnp_empty_plugin_settings_nonce']) || !wp_verify_nonce($_POST['hnp_empty_plugin_settings_nonce'], 'hnp_empty_plugin_settings_nonce')) {
            // Unauthorized request, do not save options
            wp_die('Unauthorized request.'); // Output error message for unauthorized requests
        }

        // Save options
        update_option('hnp_empty_plugin_name_field', $_POST['hnp_empty_plugin_name_field']);
        update_option('hnp_empty_plugin_number_field', sanitize_text_field($_POST['hnp_empty_plugin_number_field']));
        update_option('hnp_empty_plugin_color_field', sanitize_text_field($_POST['hnp_empty_plugin_color_field']));
        update_option('hnp_empty_plugin_description_field', sanitize_textarea_field($_POST['hnp_empty_plugin_description_field']));
        update_option('hnp_empty_plugin_dropdown_field', sanitize_text_field($_POST['hnp_empty_plugin_dropdown_field']));
        update_option('hnp_empty_plugin_checkbox_field', isset($_POST['hnp_empty_plugin_checkbox_field']) ? 1 : 0);
    }
}
add_action('admin_init', 'hnp_empty_plugin_register_security_options');

// Register plugin options and security measures
function hnp_empty_plugin_register_settings() {
    // Register setting and sanitize callback
    register_setting('hnp_empty_plugin_settings_group', 'hnp_empty_plugin_name_field');
    register_setting('hnp_empty_plugin_settings_group', 'hnp_empty_plugin_number_field');
    register_setting('hnp_empty_plugin_settings_group', 'hnp_empty_plugin_color_field');
    register_setting('hnp_empty_plugin_settings_group', 'hnp_empty_plugin_description_field');
    register_setting('hnp_empty_plugin_settings_group', 'hnp_empty_plugin_dropdown_field');
    register_setting('hnp_empty_plugin_settings_group', 'hnp_empty_plugin_checkbox_field');
}
add_action('admin_init', 'hnp_empty_plugin_register_settings');


// Security measures: Nonce verification for options update
function hnp_empty_plugin_validate_settings($input) {
    return $input; // Simply return the input, no further validation here
}

</pre>
<p>Der Beitrag <a rel="nofollow" href="https://homepage-nach-preis.de/2024/04/10/hnp-empty-plugin-wordpress-demo-code/">HNP Empty Plugin &#8211; WordPress Demo Code</a> erschien zuerst auf <a rel="nofollow" href="https://homepage-nach-preis.de">Homepage nach Preis - Webseite erstellen lassen</a>. Geschrieben von <a rel="nofollow" href="https://homepage-nach-preis.de/author/homepageadmin/">Homepage-nach-Preis</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homepage-nach-preis.de/2024/04/10/hnp-empty-plugin-wordpress-demo-code/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Muster WordPress Plugin mit Anti-Hacking Funktionen</title>
		<link>https://homepage-nach-preis.de/2023/06/18/demo-wordpress-plugin-mit-anti-hacking-funktionen/</link>
					<comments>https://homepage-nach-preis.de/2023/06/18/demo-wordpress-plugin-mit-anti-hacking-funktionen/#respond</comments>
		
		<dc:creator><![CDATA[Homepage-nach-Preis]]></dc:creator>
		<pubDate>Sun, 18 Jun 2023 14:56:54 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Homepage]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Wordpress Code]]></category>
		<category><![CDATA[Attacke]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Leervorlage]]></category>
		<category><![CDATA[Muster]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[Schutz]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[XSS]]></category>
		<guid isPermaLink="false">https://homepage-nach-preis.de/?p=7765</guid>

					<description><![CDATA[<p>In diesem Beitrag erstellen wir ein WordPress-Musterplugin und schützen dieses mit den wichtigsten Anti-Hacking Funktionen. Muster-Plugin Beschreibung / Funktionen: Beachten Sie, es handelt sich hierbei nur im Testplugin, keine tatsächliches Plugin mit einer Funktion. Das Test-Plugin lässt sich aber als Grundlage für ein richtiges Plugin nutzen. Funktionen: &#8211; Erzeugt unter &#8220;Einstellungen&#8221; den Menu-Punkt &#8220;Mein Plugin &#8211; HNP&#8221; &#8211; Erzeugt durch Klick auf den neuen Menu-Punkt Zugang zu einer Optionen-Seite &#8211; Erzeugt ein Text-Eingabe-Feld auf der Optionenfeld, zudem einen Speichern-Button &#8211; Die eingetragenen Text-Eingabe-Daten können via Shortcode im Frontend angezeigt werden &#8211; Das Shortcode ist [hnp_mein_plugin] &#x3C;?php /* Plugin Name: Mein Plugin - HNP Edition Description: Ein WordPress Plugin mit Option-Seite und Shortcode - HNP Edition. Ohne Sicherheit. Author: Homepage-nach-Preis Version: 1.0 Author URI: https://homepage-nach-preis.de/ License: GPLv3 */ // F&#xFC;gt die Option-Seite im Backend hinzu function hnp_mein_plugin_option_page() { add_options_page(&#x27;Mein Plugin Optionen - HNP&#x27;, &#x27;Mein Plugin - HNP&#x27;, &#x27;manage_options&#x27;, &#x27;hnp-mein-plugin&#x27;, &#x27;hnp_mein_plugin_option_page_content&#x27;); } add_action(&#x27;admin_menu&#x27;, &#x27;hnp_mein_plugin_option_page&#x27;); // Funktion f&#xFC;r den Inhalt der Option-Seite function hnp_mein_plugin_option_page_content() { ?&#x3E; &#x3C;div class=&#x22;wrap&#x22;&#x3E; &#x3C;h1&#x3E;Mein Plugin Einstellungen - HNP&#x3C;/h1&#x3E; &#x3C;form method=&#x22;post&#x22; action=&#x22;options.php&#x22;&#x3E; &#x3C;?php // F&#xFC;gt die WordPress Einstellungsfelder hinzu settings_fields(&#x27;hnp_mein_plugin_settings&#x27;); do_settings_sections(&#x27;hnp-mein-plugin&#x27;); submit_button(&#x27;Speichern&#x27;); ?&#x3E; &#x3C;/form&#x3E; &#x3C;/div&#x3E; &#x3C;?php } // Funktion f&#xFC;r die Erstellung der Einstellungsfelder function hnp_mein_plugin_settings_init() { add_settings_section(&#x27;hnp_mein_plugin_section&#x27;, &#x27;Allgemeine....</p>
<p>Der Beitrag <a rel="nofollow" href="https://homepage-nach-preis.de/2023/06/18/demo-wordpress-plugin-mit-anti-hacking-funktionen/">Muster WordPress Plugin mit Anti-Hacking Funktionen</a> erschien zuerst auf <a rel="nofollow" href="https://homepage-nach-preis.de">Homepage nach Preis - Webseite erstellen lassen</a>. Geschrieben von <a rel="nofollow" href="https://homepage-nach-preis.de/author/homepageadmin/">Homepage-nach-Preis</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In diesem Beitrag erstellen wir ein WordPress-Musterplugin und schützen dieses mit den wichtigsten Anti-Hacking Funktionen. </p>
<h4>Muster-Plugin Beschreibung / Funktionen: </h4>
<p>Beachten Sie, es handelt sich hierbei nur im Testplugin, keine tatsächliches Plugin mit einer Funktion. Das Test-Plugin lässt sich aber als Grundlage für ein richtiges Plugin nutzen.</p>
<p><strong><br />
Funktionen: </strong><br />
&#8211; Erzeugt unter &#8220;Einstellungen&#8221; den Menu-Punkt &#8220;Mein Plugin &#8211; HNP&#8221;<br />
&#8211; Erzeugt durch Klick auf den neuen Menu-Punkt Zugang zu einer Optionen-Seite<br />
&#8211; Erzeugt ein Text-Eingabe-Feld auf der Optionenfeld, zudem einen Speichern-Button<br />
&#8211; Die eingetragenen Text-Eingabe-Daten können via Shortcode im Frontend angezeigt werden<br />
&#8211; Das Shortcode ist [hnp_mein_plugin]</p>
<pre>
&#x3C;?php
/*
Plugin Name: Mein Plugin - HNP Edition
Description: Ein WordPress Plugin mit Option-Seite und Shortcode - HNP Edition. Ohne Sicherheit.
Author: Homepage-nach-Preis
Version: 1.0
Author URI: https://homepage-nach-preis.de/
License: GPLv3
*/

// F&#xFC;gt die Option-Seite im Backend hinzu
function hnp_mein_plugin_option_page() {
    add_options_page(&#x27;Mein Plugin Optionen - HNP&#x27;, &#x27;Mein Plugin - HNP&#x27;, &#x27;manage_options&#x27;, &#x27;hnp-mein-plugin&#x27;, &#x27;hnp_mein_plugin_option_page_content&#x27;);
}
add_action(&#x27;admin_menu&#x27;, &#x27;hnp_mein_plugin_option_page&#x27;);

// Funktion f&#xFC;r den Inhalt der Option-Seite
function hnp_mein_plugin_option_page_content() {
    ?&#x3E;
    &#x3C;div class=&#x22;wrap&#x22;&#x3E;
        &#x3C;h1&#x3E;Mein Plugin Einstellungen - HNP&#x3C;/h1&#x3E;
        &#x3C;form method=&#x22;post&#x22; action=&#x22;options.php&#x22;&#x3E;
            &#x3C;?php
            // F&#xFC;gt die WordPress Einstellungsfelder hinzu
            settings_fields(&#x27;hnp_mein_plugin_settings&#x27;);
            do_settings_sections(&#x27;hnp-mein-plugin&#x27;);
            submit_button(&#x27;Speichern&#x27;);
            ?&#x3E;
        &#x3C;/form&#x3E;
    &#x3C;/div&#x3E;
    &#x3C;?php
}

// Funktion f&#xFC;r die Erstellung der Einstellungsfelder
function hnp_mein_plugin_settings_init() {
    add_settings_section(&#x27;hnp_mein_plugin_section&#x27;, &#x27;Allgemeine Einstellungen - HNP&#x27;, &#x27;hnp_mein_plugin_section_callback&#x27;, &#x27;hnp-mein-plugin&#x27;);
    add_settings_field(&#x27;hnp_mein_plugin_text_input&#x27;, &#x27;Text Input - HNP&#x27;, &#x27;hnp_mein_plugin_text_input_callback&#x27;, &#x27;hnp-mein-plugin&#x27;, &#x27;hnp_mein_plugin_section&#x27;);
    register_setting(&#x27;hnp_mein_plugin_settings&#x27;, &#x27;hnp_mein_plugin_text_input&#x27;);
}
add_action(&#x27;admin_init&#x27;, &#x27;hnp_mein_plugin_settings_init&#x27;);

// Callback-Funktion f&#xFC;r die Sektions&#xFC;berschrift
function hnp_mein_plugin_section_callback() {
    echo &#x27;Hier k&#xF6;nnen Sie Ihre Einstellungen vornehmen - HNP.&#x27;;
}

// Callback-Funktion f&#xFC;r das Text-Input Feld
function hnp_mein_plugin_text_input_callback() {
    $text_input = get_option(&#x27;hnp_mein_plugin_text_input&#x27;);
    echo &#x27;&#x3C;input type=&#x22;text&#x22; name=&#x22;hnp_mein_plugin_text_input&#x22; value=&#x22;&#x27; . esc_attr($text_input) . &#x27;&#x22; /&#x3E;&#x27;;
}

// Shortcode-Funktion zum Anzeigen der gespeicherten Daten im Frontend
function hnp_mein_plugin_shortcode() {
    $text_input = get_option(&#x27;hnp_mein_plugin_text_input&#x27;);
    return &#x27;&#x3C;p&#x3E;&#x27; . esc_html($text_input) . &#x27;&#x3C;/p&#x3E;&#x27;;
}
add_shortcode(&#x27;hnp_mein_plugin&#x27;, &#x27;hnp_mein_plugin_shortcode&#x27;);

?&#x3E;

</pre>
<p>Der Code bietet die oben genannten Funktionen, aber keine Sicherheit. Deswegen sollte der Code / das Plugin geschützt werden &#8211; und zwar folgend: </p>
<h4> Schützen des Plugins vor Hacking / XSS Attacken:</h4>
<pre>&#x3C;?php
/*
Plugin Name: Mein Plugin - HNP Edition
Description: Ein WordPress Plugin mit Option-Seite und Shortcode - HNP Edition. Mit Sicherheit.
Author: Homepage-nach-Preis
Version: 1.0
Author URI: https://homepage-nach-preis.de/
License: GPLv3
*/

// ABSPATH -- Sch&#xFC;tzt vor direkte Zugriffe auf die Plugin-Datei
defined(&#x27;ABSPATH&#x27;) or die(&#x27;Huh, are you trying to cheat?&#x27;);

// F&#xFC;gt die Option-Seite im Backend hinzu -- current_user_can gew&#xE4;hrleistet, dass nur User mit ausreichenden Rechten auf die Options-Seite zugreifen k&#xF6;nnen
// esc_html() gew&#xE4;hrleistet, dass die Ausgabe nicht als ausf&#xFC;hrbarer Code interpretiert wird
function hnp_mein_plugin_option_page() {
    if (!current_user_can(&#x27;manage_options&#x27;)) {
        wp_die(&#x27;You do not have enough permission to view this page&#x27;);
    }

    add_options_page(&#x27;Mein Plugin Optionen - HNP&#x27;, &#x27;Mein Plugin - HNP&#x27;, &#x27;manage_options&#x27;, &#x27;hnp-mein-plugin&#x27;, &#x27;hnp_mein_plugin_option_page_content&#x27;);
}
add_action(&#x27;admin_menu&#x27;, &#x27;hnp_mein_plugin_option_page&#x27;);

// Funktion f&#xFC;r den Inhalt der Option-Seite
function hnp_mein_plugin_option_page_content() {
    ?&#x3E;
    &#x3C;div class=&#x22;wrap&#x22;&#x3E;
        &#x3C;h1&#x3E;&#x3C;?php echo esc_html__(&#x27;Mein Plugin Einstellungen - HNP&#x27;, &#x27;hnp&#x27;); ?&#x3E;&#x3C;/h1&#x3E;
        &#x3C;form method=&#x22;post&#x22; action=&#x22;options.php&#x22;&#x3E;
            &#x3C;?php
            // F&#xFC;gt die WordPress Einstellungsfelder hinzu
            settings_fields(&#x27;hnp_mein_plugin_settings&#x27;);
            do_settings_sections(&#x27;hnp-mein-plugin&#x27;);
            submit_button(esc_html__(&#x27;Speichern&#x27;, &#x27;hnp&#x27;));
            ?&#x3E;
        &#x3C;/form&#x3E;
    &#x3C;/div&#x3E;
    &#x3C;?php
}

// Funktion f&#xFC;r die Erstellung der Einstellungsfelder -- sanitize_text_field unerw&#xFC;nschte HTML- oder JavaScript-Tags entfernen
function hnp_mein_plugin_settings_init() {
    add_settings_section(&#x27;hnp_mein_plugin_section&#x27;, esc_html__(&#x27;Allgemeine Einstellungen - HNP&#x27;, &#x27;hnp&#x27;), &#x27;hnp_mein_plugin_section_callback&#x27;, &#x27;hnp-mein-plugin&#x27;);
    add_settings_field(&#x27;hnp_mein_plugin_text_input&#x27;, esc_html__(&#x27;Text Input - HNP&#x27;, &#x27;hnp&#x27;), &#x27;hnp_mein_plugin_text_input_callback&#x27;, &#x27;hnp-mein-plugin&#x27;, &#x27;hnp_mein_plugin_section&#x27;);
    register_setting(&#x27;hnp_mein_plugin_settings&#x27;, &#x27;hnp_mein_plugin_text_input&#x27;, &#x27;sanitize_text_field&#x27;);
}
add_action(&#x27;admin_init&#x27;, &#x27;hnp_mein_plugin_settings_init&#x27;);

// Callback-Funktion f&#xFC;r die Sektions&#xFC;berschrift
function hnp_mein_plugin_section_callback() {
    echo esc_html__(&#x27;Hier k&#xF6;nnen Sie Ihre Einstellungen vornehmen - HNP.&#x27;, &#x27;hnp&#x27;);
}

// Callback-Funktion f&#xFC;r das Text-Input Feld
function hnp_mein_plugin_text_input_callback() {
    $text_input = get_option(&#x27;hnp_mein_plugin_text_input&#x27;);
    echo &#x27;&#x3C;input type=&#x22;text&#x22; name=&#x22;hnp_mein_plugin_text_input&#x22; value=&#x22;&#x27; . esc_attr($text_input) . &#x27;&#x22; /&#x3E;&#x27;;
}

// Shortcode-Funktion zum Anzeigen der gespeicherten Daten im Frontend
function hnp_mein_plugin_shortcode() {
    $text_input = get_option(&#x27;hnp_mein_plugin_text_input&#x27;);
    return &#x27;&#x3C;p&#x3E;&#x27; . esc_html($text_input) . &#x27;&#x3C;/p&#x3E;&#x27;;
}
add_shortcode(&#x27;hnp_mein_plugin&#x27;, &#x27;hnp_mein_plugin_shortcode&#x27;);

// Pr&#xFC;fe auf Leerzeichen / Enter nach dem Abschluss-Tag
?&#x3E;
</pre>
<h4>current_user_can</h4>
<p>Die Funktion &#8216;current_user_can(&#8216;manage_options&#8217;)&#8217; ist eine Berechtigungsprüfungsfunktion in WordPress. Mit dieser Funktion wird überprüft, ob der aktuelle angemeldete Benutzer die Berechtigung hat, auf eine bestimmte Funktion oder Seite zuzugreifen.</p>
<p>Im Kontext des gegebenen Codes wird &#8216;current_user_can(&#8216;manage_options&#8217;)&#8217; verwendet, um sicherzustellen, dass nur Benutzer mit ausreichenden Berechtigungen auf die Optionsseite des Plugins zugreifen können. </p>
<p>Sollte ein User nicht über die erforderlichen Berechtigungen verfügt, wird die Funktion &#8216;wp_die()&#8217; aufgerufen. Diese Funktion zeigt eine Fehlermeldung an und bricht die weitere Ausführung des Codes ab. Dies hindert den Benutzer daran, auf die Optionsseite zuzugreifen. Und schützt somit vor unerwünschten Änderungen.</p>
<p>Durch die Verwendung von &#8216;current_user_can(&#8216;manage_options&#8217;)&#8217; wird also sichergestellt, dass nur berechtigte Benutzer Zugriff auf die Optionsseite des Plugins haben, was die Sicherheit und Integrität des Systems verbessert.</p>
<h4></h4>
<h4>defined(&#8216;ABSPATH&#8217;)</h4>
<p>Die Zeile &#8216;defined(&#8216;ABSPATH&#8217;) or die(&#8216;Huh, are you trying to cheat?&#8217;);&#8217; ist eine Sicherheitsmaßnahme, die sicherstellt, dass der direkte Zugriff auf die Plugin-Datei verhindert wird.</p>
<p>Indem &#8216;defined(&#8216;ABSPATH&#8217;)&#8217; überprüft wird, wird überprüft, ob die Konstante &#8216;ABSPATH&#8217; definiert ist. Diese Konstante enthält den absoluten Pfad zum Hauptverzeichnis der WordPress-Installation. Sie wird meist in der &#8216;wp-config.php&#8217;-Datei definiert.</p>
<p>Wenn die Konstante &#8216;ABSPATH&#8217; nicht definiert ist, deutet dies darauf hin, dass scheinbar die Plugin-Datei direkt aufgerufen wird. Also nicht über das WordPress-System. Und das könnte auf einen Versuch hinweisen, unberechtigten Zugriff oder Manipulation vorzunehmen.</p>
<p>In solch einem Fall wird &#8216;or die(&#8216;Huh, are you trying to cheat?&#8217;);&#8217; ausgeführt. Diese Anweisung bricht die Ausführung des Codes ab und gibt die angegebene Fehlermeldung aus. Dadurch wird verhindert, dass der restliche Code im Plugin ausgeführt wird.</p>
<p>Durch die Verwendung dieser Sicherheitsmaßnahme wird sichergestellt, dass das Plugin nur über das WordPress-System aufgerufen wird und nicht direkt über den Dateipfad. Dadurch wird das Risiko von potenziell unsicheren oder unerlaubten Zugriffen stark reduziert.</p>
<h4></h4>
<h4>esc_html()</h4>
<p>Die Funktion &#8216;esc_html()&#8217; wird verwendet, um eine Zeichenkette (String) sicher für die Ausgabe im HTML-Code zu machen. Sie konvertiert bestimmte Zeichen in ihre entsprechenden HTML-Entitäten. Um potenziell unsicheren Code zu verhindern und Cross-Site Scripting (XSS) Angriffe zu vermeiden.</p>
<p>Durch die Anwendung von &#8216;esc_html()&#8217; wird sichergestellt, dass Sonderzeichen wie &#8216;&lt;&#8216;, &#8216;&gt;&#8217;, &#8216;&amp;&#8217;, &#8216;&#8221;&#8216;, &#8221;&#8217; usw. in HTML-Entitäten umgewandelt werden. Dadurch wird verhindert, dass unerwünschter Code ausgeführt oder HTML-Tags interpretiert werden, die potenziell schädlichen Code enthalten könnten.</p>
<p>Die Verwendung von &#8216;esc_html()&#8217; ist eine wichtige Sicherheitsmaßnahme in der Webentwicklung, insbesondere bei der Verarbeitung von Benutzereingaben. Sie hilft dabei, die Integrität und Sicherheit von Webanwendungen zu gewährleisten, indem sie verhindert, dass bösartiger Code in die Ausgabe gelangt und potenzielle Schwachstellen ausnutzt.</p>
<p>Es ist eine bewährte Praxis, &#8216;esc_html()&#8217; immer dann anzuwenden, wenn Benutzereingaben in HTML-Dokumente eingefügt werden, um das Risiko von XSS-Angriffen zu minimieren und eine sichere Ausgabe zu gewährleisten.</p>
<p>&nbsp;</p>
<h4>sanitize_text_field()</h4>
<p>Die Funktion &#8216;sanitize_text_field()&#8217; wird verwendet, um eine Zeichenkette (String) zu bereinigen. Also sicher, für die Verwendung in einer Datenbank oder als Ausgabe in HTML, zu machen. Sie entfernt potenziell schädlichen oder unerwünschten Code aus dem übergebenen Text und sorgt für eine sichere Aufnahme von Benutzereingaben.</p>
<p>Durch die Anwendung von &#8216;sanitize_text_field()&#8217; werden unerwünschte Zeichen wie HTML-Tags, JavaScript-Code oder andere spezielle (XSS relevante) Zeichen entfernt oder in eine sichere Form umgewandelt. Dadurch wird das Risiko von Sicherheitslücken wie Cross-Site Scripting (XSS) minimiert.</p>
<p>Die Verwendung von &#8216;sanitize_text_field()&#8217; ist besonders wichtig, wenn Benutzereingaben in Datenbanken gespeichert oder in HTML-Ausgaben verwendet werden. Denn sie hilft dabei, sicherzustellen, dass die Daten den erwarteten Formatierungsregeln entsprechen und keine potenziell schädlichen Inhalte enthalten.</p>
<p>Es ist empfehlenswert, &#8216;sanitize_text_field()&#8217; einzusetzen, wenn Benutzereingaben verarbeitet werden, insbesondere wenn sie für Datenbankabfragen, dynamische Inhalte oder Ausgaben in HTML-Templates verwendet werden. Dies trägt dazu bei, die Sicherheit der Anwendung zu verbessern und das Risiko von Angriffen zu verringern, welche durch unsaubere oder unzureichend validierte Benutzereingaben ausgelöst werden könnten.</p>
<h4>Plugin-Download: </h4>
<p>Das fertige Muster-Plugin (mit Sicherheitsoptimierungen) kann hier runtergeladen werden:<br />
[sdm_download id=&#8221;7784&#8243; fancy=&#8221;0&#8243;]<br />
Der Code / das Plugin darf frei genutzt werden, ob privat oder gewerblich. Der Code darf frei verändert / erweitert werden. Eine Urhebernennung ist nicht zwingend notwendig und auch die Authoren-Tags dürfen entfernt werden. Bitte beachten Sie, dass dieser Download keinerlei Gewährleistung oder Support beinhaltet. Jegliche Nutzung oder Installation erfolgt auf eigene Verantwortung.</p>
<p>Der Beitrag <a rel="nofollow" href="https://homepage-nach-preis.de/2023/06/18/demo-wordpress-plugin-mit-anti-hacking-funktionen/">Muster WordPress Plugin mit Anti-Hacking Funktionen</a> erschien zuerst auf <a rel="nofollow" href="https://homepage-nach-preis.de">Homepage nach Preis - Webseite erstellen lassen</a>. Geschrieben von <a rel="nofollow" href="https://homepage-nach-preis.de/author/homepageadmin/">Homepage-nach-Preis</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://homepage-nach-preis.de/2023/06/18/demo-wordpress-plugin-mit-anti-hacking-funktionen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
