Policy Checkbox: Link zur Datenschutzerklärung

  • Hallo zusammen,
    ich nutze schon längere Zeit ein kleines Script zum Einfügen einer Policy Checkbox unter den Kommentaren bzw. meinem eigenen Gästebuch. Als Schönheitsfehler kann ich den Link zur Datenschutzerklärung bisher nicht einfügen.
    Bild der Policy Checkbox:

    Hier das relevante Script (Teil eines eigenen Plugins):

    Das Wort "Datenschutzbedingungen" sollte verlinkt werden.

    Meine Versuche, den Link über eine Variable in die Zeile (...akzeptiere die Datenschutzbedingungen.) einzufügen sind gescheitert:
    <a href= <?php echo $link; ?>>

    Dieses Plugin macht genau das, was ich will, aber ich möchte ein weiteres Plugin vermeiden:
    https://de.wordpress.org/plugins/wp-comment-policy-checkbox/

    Für den Anfang wäre eine Variable, welche den Link zur aktuellen Datenschutzseite enthält, schon gut. Die Auswahl der richtigen Seite beim o. g. Plugin ist natürlich perfekt, aber vermutlich schwierig in meinen vorhandenen Code zu integrieren.

    Hat jemand eine gute Idee, wie ich bei dieser Sache weiter komme?
    Vielen Dank schon mal im voraus.

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Zitat

    Das Wort "Datenschutzbedingungen" sollte verlinkt werden.

    Meine Versuche, den Link über eine Variable in die Zeile (...akzeptiere die Datenschutzbedingungen.) einzufügen sind gescheitert:
    <a href= <?php echo $link; ?>>

    PHP
    return $comment_field . '<input ..... viele text <a href="' .  $link  . '"></a> viele html oder so... ';

    Mit offenen Augen träumen

    5 Mal editiert, zuletzt von r23 (19. Februar 2023 um 02:45)

  • Welcher konkrete Fehler bei der Ausgabe entsteht in dieser o.g. Zeile?

    PHP
    return $comment_field . '<input type="checkbox" name="privacy" value="privacy-key" class="privacyBox" aria-req="true"><p class="pprivacy">Ich stimme der Speicherung und Verarbeitung meiner Daten nach der EU-DSGVO zu und akzeptiere die Datenschutzbedingungen.<p>'; // Fehler bei der Ausgabe


    Woher kommt der Inhalt für die Variable [FONT=Courier New]$link[/FONT] und wo/wie genau wurde dieser Code eingefügt?

    PHP
    <a href= <?php echo $link; ?>>


    Ist Deine Seite Datenschutzerklärung in WordPress als solche hinterlegt/markiert? Dann versuche es damit:

    PHP
    return $comment_field . '<input type="checkbox" name="privacy" value="privacy-key" class="privacyBox" aria-req="true"><p class="pprivacy">Ich stimme der Speicherung und Verarbeitung meiner Daten nach der EU-DSGVO zu und akzeptiere die <a href="' . get_privacy_policy_url() . '">Datenschutzbedingungen</a>.<p>';
  • Das hat leider nicht funktioniert.

    $link musst du selbstverständlich mit einem $link zur Datenschutzerklärung füllen

    PHP
    $link = 'https://example.org/total-wichtig';

    und der Link benötigt einen Link-Text

    PHP
    <a href="' .  $link  . '">Datenschutzerklärung</a>

    mit den Zugangsdaten konnte ich nichts anfangen...

    Mit offenen Augen träumen

  • Welcher konkrete Fehler bei der Ausgabe entsteht in dieser o.g. Zeile?


    Das war noch ein vergessener Kommentar aus der Entwicklungszeit des Plugins; werde ich löschen. Danke für den Hinweis.

    Ist Deine Seite Datenschutzerklärung in WordPress als solche hinterlegt/markiert? Dann versuche es damit:


    Daran hatte ich leider nicht gedacht. Ich betreue etwa 70 Websites (ehrenamtlich) und dort lautet die angelegte Seite immer "Datenschutz". Da mein Plugin auch für andere Seiten-Namen passen sollte, wollte ich eine Variable verwenden. Die Funktion "get_privacy_policy_url()" hatte ich bisher noch nicht verwendet, aber das ist die Super-Lösung! Mit einem Hinweis im Plugin, dass die Datenschutzseite über Einstellungen -> Datenschutz definiert sein muss, passt es für alle verwendeten Seiten-Namen der DS-Erklärung.
    Ganz herzlichen Dank für diesen tollen Tipp!
    Dein Code-Vorschlag wurde eingebaut und funktioniert beim Kommentar-Formular und bei meinem eigenen Gästebuch-Plugin:
    https://meltedcloth.s1-tastewp.com/sample-page/
    https://meltedcloth.s1-tastewp.com/gaestebuch/

  • mit den Zugangsdaten konnte ich nichts anfangen...


    Schade. Ich dachte, du könntest dich damit in die Test-Site einloggen.

    Mittlerweile ist mein Problem durch den tollen Tipp von b3317133 gelöst.

    Vielen Dank nochmal für eure Unterstützung!

  • Mittlerweile ist mein Problem durch den tollen Tipp von b3317133 gelöst.

    Dies funktioniert nur, wenn man die Datenschutzerklärung über WordPress verwaltet und nicht über einen Dienstleister pflegen lässt... daher die alternative von mir.

    Mit offenen Augen träumen

  • Dies funktioniert nur, wenn man die Datenschutzerklärung über WordPress verwaltet und nicht über einen Dienstleister pflegen lässt... daher die alternative von mir.


    Dies trifft bei allen von mir erstellten Websites zu. Danke für die Erinnerung.

  • $link musst du selbstverständlich mit einem $link zur Datenschutzerklärung füllen

    PHP
    $link = 'https://example.org/total-wichtig';

    und der Link benötigt einen Link-Text

    PHP
    <a href="' .  $link  . '">Datenschutzerklärung</a>

    Habe diese Version ausprobiert und sie funktioniert ebenfalls gut. Wenn sich die Variable außerhalb der Funktion befindet, muss sie als Global deklariert werden. Ich werde das Muster meiner Schnipsel-Sammlung zufügen. Danke nochmals.

  • .. mit dem Hinweis, dass die Datenschutzseite von WordPress verwaltet werden muss.


    Der Inhalt der Seite wird nicht von WordPress verwaltet. Die Seite wird nur von WordPress als Datenschutzseite markiert und kann so über die o.g. API Aufrufe an entspr. sonstigen Stellen im Core, Theme, Plugins automatisch verlinkt/genutzt oder über die in der Datenbank in der Option [FONT=Courier New]wp_page_for_privacy_policy[/FONT] dafür hinterlegte Post-ID mit Standardtexten befüllt werden.

    So kannst Du für den Hinweistext in Deinem Plugin herausfinden, ob eine Datenschutzsseite markiert ist oder nicht:

    PHP
    if ( !empty( get_the_privacy_policy_link() ) ) {
        // es ist eine Datenschutzseite markiert und diese ist publiziert/öffentlich
    } else {
        // es ist keine Datenschutzseite markiert oder die markierte Seite steht auf Entwurf/Privat/Zukunft
    }


    Ähnlich kannst Du bei Deiner Checkbox die Rückgabe der API Funktion auf [FONT=Courier New]empty()[/FONT] prüfen bevor Du einen Link einfügst.

    PHP
    return $comment_field . ' ... und akzeptiere die ' . ( ( !empty( $link = get_the_privacy_policy_link() ) ) ? $link : 'Datenschutzerklärung' ) . '.  *</p>';


    Ergänzung: Code noch etwas angepasst, so dass die WordPress API Filter mit berücksichtigt werden.

    20 Mal editiert, zuletzt von b3317133 (20. Februar 2023 um 22:34)

  • So kannst Du für den Hinweistext in Deinem Plugin herausfinden, ob eine Datenschutzsseite markiert ist oder nicht:

    PHP
    if ( !empty( get_the_privacy_policy_link() ) ) {
        // es ist eine Datenschutzseite markiert und diese ist publiziert/öffentlich
    } else {
        // es ist keine Datenschutzseite markiert oder die markierte Seite steht auf Entwurf/Privat/Zukunft
    }


    Damit könnte ich eine Admin notice erstellen und den Admin darauf hinweisen, dass keine DS-Seite zugewiesen ist. In diesem Fall wird die gleiche Seite erneut aufgerufen.
    Praktisch wäre, wenn dann der Link entfernt würde, da es sonst irritiert (Bin noch am Suchen; hat noch nicht geklappt).

    Ähnlich kannst Du bei Deiner Checkbox die Rückgabe der API Funktion auf [FONT=Courier New]empty()[/FONT] prüfen bevor Du einen Link einfügst.


    Da müsste ich eine Variable anstatt "get_the_privacy_policy_link()" verwenden, was in meinem Fall umständlicher ist.

  • Welcher Link soll wo entfernt werden?

    Die o.g. [FONT=Courier New]if/else[/FONT] Abfrage kannst Du nutzen um bei [FONT=Courier New]else[/FONT] Deinen "Link funktioniert nur" Hinweistext auszugeben. Eine zusätzliche (nervige) Admin Notice würde ich nicht empfehlen.

    Der o.g. Checkbox Code fügt einen Link zur Datenschutzseite inkl. Seitentitel lt. WordPress ein, wenn eine Datenschutzseite markiert/öffentlich ist, ansonsten nur den Text Datenschutzerklärung ohne Link, probiere es einfach mal aus.

  • PHP
    return $comment_field . ' ... und akzeptiere die ' . ( ( !empty( $link = get_the_privacy_policy_link() ) ) ? $link : 'Datenschutzerklärung' ) . '.  *</p>';

    Ergänzung: Code noch etwas angepasst, so dass die WordPress API Filter mit berücksichtigt werden.


    Das passt doch recht gut und wenn keine DS-Seite zugewiesen ist, entfällt der Link. Schönheitsfehler: In meinem Fall wird als Link der Seitenname (Datenschutz) angezeigt und nicht das Wort "Datenschutzbedingungen".

  • Die Ausgabe des tatsächlichen Seitentitels lt. WordPress ist kein Schönheitsfehler sondern genau so gewollt. Manche nennen die Seite auf dem ganzen Website durchgängig einheitlich Datenschutzerklärung oder nur Datenschutz oder wie auch immer und bei mehrsprachigen Websites wird die korrekte Übersetzung verwendet usw.

  • Welcher Link soll wo entfernt werden?


    Das hat sich erledigt und mit meiner Antwort überschnitten.

    Der o.g. Checkbox Code fügt einen Link zur Datenschutzseite inkl. Seitentitel lt. WordPress ein, wenn eine Datenschutzseite markiert/öffentlich ist, ansonsten nur den Text Datenschutzerklärung ohne Link, probiere es einfach mal aus.

    Mir würde es besser gefallen, wenn anstatt "Datenschutz" dann "Datenschutzbedingungen" steht. Bei allen betreuten Websites lautet die Seite "Datenschutz" (historisch gewachsen) und das kann ich nicht ändern. Der Linkname könnte ja verschieden sein wie "Datenschutzerklärung", "Datenschutzbedingungen" usw. Es sieht sonst etwas seltsam aus (siehe Bild).

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!