Plugin Directory

Changeset 3773271


Ignore:
Timestamp:
10/29/2026 02:46:41 PM (5 hours ago)
Author:
seocoachai
Message:

3.8.0

Location:
pruefbericht-seo-quick-check
Files:
6 edited
1 copied

Legend:

Unmodified
Added
Removed
  • pruefbericht-seo-quick-check/tags/3.8.0/pruefbericht-seo-quick-check.php

    r3765225 r3773271  
    44 * Plugin URI:        https://meinseocoach.de
    55 * Description:       SEO-Werkzeuge für WordPress: SEO-Quick-Check, KI-Bereitschaft (dürfen GPTBot, ClaudeBot und Co. lesen?), llms.txt erzeugen, Sitemap-Status und Google-Search-Console-Verifikation. Optional verbindbar mit dem SEO Coach (externer Dienst).
    6  * Version:           3.7.0
     6 * Version:           3.8.0
    77 * Requires at least: 5.8
    88 * Requires PHP:      7.4
    … …  
    1818}
    1919
    20 define( 'SDCOACH_VERSION', '3.7.0' );
     20define( 'SDCOACH_VERSION', '3.8.0' );
    2121define( 'SDCOACH_MIN_VERSION', '2.1.0' ); // Dashboard erwartet mindestens diese Version
    2222// Prefix-Konvention: Alle plugineigenen Funktionen, Options, Transients, Post-Meta und
    … …  
    738738
    739739    wp_safe_redirect( add_query_arg( 'sdcoach-checked', '1', admin_url( 'options-general.php?page=pruefbericht-seo-quick-check' ) ) );
     740    exit;
     741}
     742
     743// ─── Admin-Post-Handler: Prüfbericht per E-Mail anfordern (seit 3.8.0) ───────
     744//
     745// Das Plugin verschickt selbst keine Mail. Es öffnet den Prüfbericht des SEO Coach in
     746// einem neuen Tab, Adresse und E-Mail sind dort vorbefüllt. Übertragen wird erst, wenn
     747// der Nutzer dort die Bot-Prüfung löst und auf Prüfen klickt; danach kommt zuerst eine
     748// Bestätigungsmail. Die Werte stehen im Hash, der nie an einen Server geht.
     749
     750define( 'SDCOACH_PRUEFBERICHT_URL', 'https://app.meinseocoach.de/pruefbericht' );
     751
     752add_action( 'admin_post_sdcoach_bericht_anfordern', 'sdcoach_handle_bericht_anfordern_action' );
     753
     754function sdcoach_handle_bericht_anfordern_action() {
     755    if ( ! current_user_can( 'manage_options' ) ) {
     756        wp_die( esc_html__( 'Keine Berechtigung.', 'pruefbericht-seo-quick-check' ) );
     757    }
     758    check_admin_referer( 'sdcoach_bericht_anfordern' );
     759
     760    $email = isset( $_POST['sdcoach_bericht_email'] ) ? sanitize_email( wp_unslash( $_POST['sdcoach_bericht_email'] ) ) : '';
     761    if ( ! is_email( $email ) ) {
     762        wp_safe_redirect( add_query_arg( 'sdcoach-bericht', 'ungueltig', admin_url( 'options-general.php?page=pruefbericht-seo-quick-check' ) ) . '#sdcoach-bericht' );
     763        exit;
     764    }
     765
     766    // Nur der Zeitpunkt, nicht die Adresse: Ob der Nutzer drüben wirklich prüfen ließ,
     767    // weiß das Plugin nicht. Deshalb „gestartet“, nie „angefordert“.
     768    update_option( 'sdcoach_bericht_gestartet_at', time(), false );
     769
     770    $ziel = SDCOACH_PRUEFBERICHT_URL . '#' . http_build_query(
     771        [
     772            'url'   => home_url( '/' ),
     773            'email' => $email,
     774        ],
     775        '',
     776        '&',
     777        PHP_QUERY_RFC3986
     778    );
     779    // Den fremden Host nur für diese eine Weiterleitung erlauben, nicht für die ganze Website.
     780    add_filter(
     781        'allowed_redirect_hosts',
     782        static function ( $hosts ) {
     783            $hosts[] = (string) wp_parse_url( SDCOACH_PRUEFBERICHT_URL, PHP_URL_HOST );
     784            return $hosts;
     785        }
     786    );
     787    // 303, damit der Browser drüben eine normale Seite lädt und das Formular nicht erneut sendet.
     788    wp_safe_redirect( $ziel, 303 );
    740789    exit;
    741790}
    … …  
    13211370
    13221371    // Schritt-Status: erledigt = Haken, erster offener Schritt = hervorgehoben
     1372    $bericht_gestartet = (int) get_option( 'sdcoach_bericht_gestartet_at', 0 );
    13231373    $step_done = [
    13241374        1 => (bool) get_option( 'sdcoach_quick_check_done_at', 0 ) || ( is_array( $check ) && empty( $check['error'] ) ),
    1325         2 => $token !== '' || $gsc_datei !== '',
    1326         3 => (bool) get_option( 'sdcoach_coach_connected_at', 0 ),
     1375        2 => $bericht_gestartet > 0,
     1376        3 => $token !== '' || $gsc_datei !== '',
     1377        4 => (bool) get_option( 'sdcoach_coach_connected_at', 0 ),
    13271378    ];
    1328     $current_step = 4; // 4 = alles erledigt
    1329     foreach ( [ 1, 2, 3 ] as $s ) {
     1379    $current_step = 5; // 5 = alles erledigt
     1380    foreach ( [ 1, 2, 3, 4 ] as $s ) {
    13301381        if ( ! $step_done[ $s ] ) {
    13311382            $current_step = $s;
    … …  
    13351386    $steps = [
    13361387        1 => __( 'Schritt 1: Website prüfen', 'pruefbericht-seo-quick-check' ),
    1337         2 => __( 'Schritt 2: Google verbinden', 'pruefbericht-seo-quick-check' ),
    1338         3 => __( 'Schritt 3: Coach verbinden (optional)', 'pruefbericht-seo-quick-check' ),
     1388        2 => $step_done[2]
     1389            ? __( 'Schritt 2: Prüfbericht gestartet', 'pruefbericht-seo-quick-check' )
     1390            : __( 'Schritt 2: Prüfbericht per E-Mail', 'pruefbericht-seo-quick-check' ),
     1391        3 => __( 'Schritt 3: Google verbinden', 'pruefbericht-seo-quick-check' ),
     1392        4 => __( 'Schritt 4: Coach verbinden (optional)', 'pruefbericht-seo-quick-check' ),
    13391393    ];
    13401394    $chip_done   = 'background:#e7f7d3;border:1px solid #b5e08a;border-radius:999px;padding:4px 12px;color:#3a5a13;';
    … …  
    13501404                <?php if ( $num > 1 ) : ?><span aria-hidden="true">→</span><?php endif; ?>
    13511405                <?php if ( $step_done[ $num ] ) : ?>
    1352                     <span style="<?php echo esc_attr( $chip_done ); ?>">✓ <?php echo esc_html( $label ); ?></span>
     1406                    <?php // Beim Prüfbericht kein Haken: Ob er drüben wirklich angefordert wurde, sieht das Plugin nicht. ?>
     1407                    <span style="<?php echo esc_attr( $chip_done ); ?>"><?php echo 2 === $num ? '↗' : '✓'; ?> <?php echo esc_html( $label ); ?></span>
    13531408                <?php elseif ( $num === $current_step ) : ?>
    13541409                    <span style="<?php echo esc_attr( $chip_active ); ?>"><?php echo esc_html( $label ); ?></span>
    … …  
    13571412                <?php endif; ?>
    13581413            <?php endforeach; ?>
    1359             <?php if ( 4 === $current_step ) : ?>
     1414            <?php if ( 5 === $current_step ) : ?>
    13601415                <span style="color:#3a5a13;font-weight:600;">🎉 <?php esc_html_e( 'Alles eingerichtet!', 'pruefbericht-seo-quick-check' ); ?></span>
    13611416            <?php endif; ?>
    … …  
    13691424        $sdcoach_sichtbar       = isset( $_GET['sdcoach-sichtbar'] ) ? sanitize_key( wp_unslash( $_GET['sdcoach-sichtbar'] ) ) : '';
    13701425        $sdcoach_notice_llms    = isset( $_GET['sdcoach-llms'] ) ? sanitize_key( wp_unslash( $_GET['sdcoach-llms'] ) ) : '';
     1426        $sdcoach_notice_bericht = isset( $_GET['sdcoach-bericht'] ) ? sanitize_key( wp_unslash( $_GET['sdcoach-bericht'] ) ) : '';
    13711427        // phpcs:enable WordPress.Security.NonceVerification.Recommended
    13721428        ?>
    … …  
    14871543                        $check['gsc_meta'] ? __( 'Google-Verifikations-Tag aktiv', 'pruefbericht-seo-quick-check' ) : __( 'Kein Google-Verifikations-Tag', 'pruefbericht-seo-quick-check' ),
    14881544                        $check['gsc_meta'] ? 'ok' : 'warn',
    1489                         $check['gsc_meta'] ? '' : __( 'Siehe Abschnitt 2 unten: Search Console verbinden.', 'pruefbericht-seo-quick-check' )
     1545                        $check['gsc_meta'] ? '' : __( 'Siehe Abschnitt 3 unten: Search Console verbinden.', 'pruefbericht-seo-quick-check' )
    14901546                    );
    14911547                    ?>
    … …  
    15691625                    ?>
    15701626                </p>
     1627                <p class="description">
     1628                    <?php esc_html_e( 'Geprüft wurden die technischen Grundlagen deiner Startseite. Ob du bei Google gefunden und angeklickt wirst und auf welchem Platz du stehst, sieht dieser Check nicht. Ein grüner Haken heißt: Die Grundlage stimmt. Er heißt nicht, dass die Website fertig optimiert ist.', 'pruefbericht-seo-quick-check' ); ?>
     1629                </p>
    15711630            <?php elseif ( is_array( $check ) && ! empty( $check['error'] ) ) : ?>
    15721631                <p><?php esc_html_e( 'Die Startseite konnte nicht abgerufen werden:', 'pruefbericht-seo-quick-check' ); ?> <code><?php echo esc_html( $check['error'] ); ?></code></p>
    … …  
    15811640        </div>
    15821641
    1583         <!-- Karte 2: Google Search Console -->
     1642        <!-- Karte 2: Ausführlicher Prüfbericht per E-Mail (seit 3.8.0) -->
     1643        <div id="sdcoach-bericht" style="<?php echo esc_attr( $card ); ?>">
     1644            <h2 style="margin-top:0;"><?php esc_html_e( '2. Ausführlicher Prüfbericht per E-Mail', 'pruefbericht-seo-quick-check' ); ?></h2>
     1645            <p>
     1646                <?php esc_html_e( 'Der kostenlose Prüfbericht des SEO Coach geht weiter als der Check oben: Er prüft deine Startseite von außen, unter anderem Ladezeit, HTTPS und Inhalt, erklärt jeden Befund mit einer Anleitung und schickt dir das Ergebnis als PDF per E-Mail.', 'pruefbericht-seo-quick-check' ); ?>
     1647            </p>
     1648            <?php if ( 'ungueltig' === $sdcoach_notice_bericht ) : ?>
     1649                <p style="color:#b32d2e;"><?php esc_html_e( 'Das ist keine gültige E-Mail-Adresse. Bitte prüfe die Eingabe.', 'pruefbericht-seo-quick-check' ); ?></p>
     1650            <?php endif; ?>
     1651            <form method="post" action="<?php echo esc_url( admin_url( 'admin-post.php' ) ); ?>" target="_blank" rel="noopener">
     1652                <?php wp_nonce_field( 'sdcoach_bericht_anfordern' ); ?>
     1653                <input type="hidden" name="action" value="sdcoach_bericht_anfordern" />
     1654                <label for="sdcoach-bericht-email"><?php esc_html_e( 'Deine E-Mail-Adresse:', 'pruefbericht-seo-quick-check' ); ?></label><br />
     1655                <input type="email" id="sdcoach-bericht-email" name="sdcoach_bericht_email" value="<?php echo esc_attr( (string) get_option( 'admin_email', '' ) ); ?>" required style="width:320px;margin:4px 8px 4px 0;" />
     1656                <button type="submit" class="button button-primary"><?php esc_html_e( 'Prüfbericht öffnen (neuer Tab)', 'pruefbericht-seo-quick-check' ); ?></button>
     1657            </form>
     1658            <p class="description">
     1659                <?php esc_html_e( 'Es öffnet sich die Seite des SEO Coach (app.meinseocoach.de). Deine Website-Adresse und diese E-Mail-Adresse sind dort schon eingetragen. Übertragen werden sie erst, wenn du dort auf Prüfen klickst. Danach bekommst du eine Mail, in der du deine Adresse bestätigst, und dann den Bericht. Werbung bekommst du nur, wenn du das ausdrücklich ankreuzt.', 'pruefbericht-seo-quick-check' ); ?>
     1660                <a href="https://app.meinseocoach.de/datenschutz" target="_blank" rel="noopener"><?php esc_html_e( 'Datenschutz', 'pruefbericht-seo-quick-check' ); ?></a>
     1661            </p>
     1662            <?php if ( $bericht_gestartet > 0 ) : ?>
     1663                <p class="description">
     1664                    <?php
     1665                    /* translators: %s: date and time when the report page was last opened */
     1666                    printf( esc_html__( 'Zuletzt geöffnet am %s. Keine Mail bekommen? Schau im Spam-Ordner nach oder öffne den Prüfbericht noch einmal.', 'pruefbericht-seo-quick-check' ), esc_html( wp_date( 'd.m.Y H:i', $bericht_gestartet ) ) );
     1667                    ?>
     1668                </p>
     1669            <?php endif; ?>
     1670        </div>
     1671
     1672        <!-- Karte 3: Google Search Console -->
    15841673        <div style="<?php echo esc_attr( $card ); ?>">
    1585             <h2 style="margin-top:0;"><?php esc_html_e( '2. Google Search Console verbinden', 'pruefbericht-seo-quick-check' ); ?></h2>
     1674            <h2 style="margin-top:0;"><?php esc_html_e( '3. Google Search Console verbinden', 'pruefbericht-seo-quick-check' ); ?></h2>
    15861675            <?php if ( $token || $gsc_datei ) : ?>
    15871676                <p><?php
    … …  
    16451734                <?php endif; ?>
    16461735            </form>
     1736            <p class="description" style="margin-top:12px;">
     1737                <?php esc_html_e( 'Kommst du mit der Search Console nicht weiter? Markus vom SEO Coach hilft dir bei der ersten Einrichtung kostenlos und persönlich. Schreib einfach an', 'pruefbericht-seo-quick-check' ); ?>
     1738                <a href="mailto:support@meinseocoach.de">support@meinseocoach.de</a>
     1739            </p>
    16471740        </div>
    16481741
    1649         <!-- Karte 3: SEO Coach Verbindung -->
     1742        <!-- Karte 4: SEO Coach Verbindung -->
    16501743        <div style="<?php echo esc_attr( $card ); ?>">
    1651             <h2 style="margin-top:0;"><?php esc_html_e( '3. Mit SEO Coach verbinden (optional)', 'pruefbericht-seo-quick-check' ); ?></h2>
     1744            <h2 style="margin-top:0;"><?php esc_html_e( '4. Mit SEO Coach verbinden (optional)', 'pruefbericht-seo-quick-check' ); ?></h2>
    16521745            <p>
    1653                 <?php esc_html_e( 'SEO Coach ist ein externer Dienst (meinseocoach.de), der deine Search-Console-Daten analysiert und Optimierungen per Klick zurück in WordPress schreibt. Die Verbindung ist freiwillig: Erst wenn du diesen API-Key dort einträgst, kann der Dienst auf die Inhalte dieser Website zugreifen.', 'pruefbericht-seo-quick-check' ); ?>
     1746                <?php esc_html_e( 'Der SEO Coach ist ein externer Dienst (meinseocoach.de). Er liest deine eigenen Search-Console-Daten und zeigt dir, was dieser Check nicht sehen kann:', 'pruefbericht-seo-quick-check' ); ?>
     1747            </p>
     1748            <ul style="list-style:disc;margin-left:20px;">
     1749                <li><?php esc_html_e( 'wie oft du bei Google gefunden und angeklickt wirst, mit welchen Suchbegriffen und auf welchem Platz', 'pruefbericht-seo-quick-check' ); ?></li>
     1750                <li><?php esc_html_e( 'Seiten, die knapp vor der ersten Google-Seite stehen, und Seiten, die Klicks verlieren', 'pruefbericht-seo-quick-check' ); ?></li>
     1751                <li><?php esc_html_e( 'jede Woche eine Ranking-Meldung und jeden Monat einen Bericht per E-Mail', 'pruefbericht-seo-quick-check' ); ?></li>
     1752                <li><?php esc_html_e( 'neue Titel und Beschreibungen, die er nach deiner Freigabe in WordPress einträgt (ab Starter)', 'pruefbericht-seo-quick-check' ); ?></li>
     1753            </ul>
     1754            <p>
     1755                <strong><?php esc_html_e( 'Kostenlos starten:', 'pruefbericht-seo-quick-check' ); ?></strong>
     1756                <?php esc_html_e( '7 Tage alle Starter-Funktionen, danach automatisch im Gratis-Tarif. Keine Kreditkarte, keine automatische kostenpflichtige Verlängerung.', 'pruefbericht-seo-quick-check' ); ?>
     1757            </p>
     1758            <p>
     1759                <a class="button button-primary" href="https://app.meinseocoach.de/register" target="_blank" rel="noopener"><?php esc_html_e( 'Kostenloses Konto erstellen', 'pruefbericht-seo-quick-check' ); ?></a>
     1760                <a class="button" href="https://app.meinseocoach.de/demo" target="_blank" rel="noopener" style="margin-left:8px;"><?php esc_html_e( 'Demo mit Beispieldaten ansehen', 'pruefbericht-seo-quick-check' ); ?></a>
     1761            </p>
     1762            <h3 style="margin:20px 0 4px;"><?php esc_html_e( 'Schon ein Konto? So verbindest du diese Website', 'pruefbericht-seo-quick-check' ); ?></h3>
     1763            <p class="description">
     1764                <?php esc_html_e( 'Die Verbindung ist freiwillig: Erst wenn du diesen API-Key im SEO Coach einträgst, kann der Dienst auf die Inhalte dieser Website zugreifen.', 'pruefbericht-seo-quick-check' ); ?>
    16541765            </p>
    16551766            <table class="form-table">
    … …  
    16771788        </div>
    16781789
    1679         <!-- Karte 4: Anfragen zählen -->
     1790        <!-- Karte 5: Anfragen zählen -->
    16801791        <?php
    16811792        $sdcoach_anfragen_an      = sdcoach_anfragen_aktiv();
    … …  
    16881799        ?>
    16891800        <div id="sdcoach-anfragen" style="<?php echo esc_attr( $card ); ?>">
    1690             <h2 style="margin-top:0;"><?php esc_html_e( '4. Anfragen zählen (optional)', 'pruefbericht-seo-quick-check' ); ?></h2>
     1801            <h2 style="margin-top:0;"><?php esc_html_e( '5. Anfragen zählen (optional)', 'pruefbericht-seo-quick-check' ); ?></h2>
    16911802            <p>
    16921803                <?php esc_html_e( 'Zählt, wie viele Anfragen deine Website bringt: erfolgreich abgeschickte Formulare und Klicks auf Telefonnummern und E-Mail-Adressen. Ein Klick auf eine Nummer ist noch kein Anruf, aber ein gutes Zeichen.', 'pruefbericht-seo-quick-check' ); ?>
  • pruefbericht-seo-quick-check/tags/3.8.0/readme.txt

    r3765225 r3773271  
    55Tested up to: 7.1
    66Requires PHP: 7.4
    7 Stable tag: 3.7.0
     7Stable tag: 3.8.0
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
    … …  
    3939Off by default. Once you switch it on, the plugin counts successful form submissions (Contact Form 7, WPForms, Gravity Forms, Elementor Pro, Fluent Forms, Ninja Forms) and clicks on phone numbers and email addresses on your site. Per day it stores only the type, the address of the published page and the form name you gave the form, as a number. No field contents, no cookies, no IP addresses. Page addresses and form names are stored as they are, so if a page slug or form name contains a person's name, so does the count. Pages that WordPress does not know as published, public pages are counted as "(other page)"; a page that a membership plugin protects on top is not recognised as such. Against abuse, a hash of the visitor's IP address is kept for the current day only, made with a random secret that exists only for that day. Hashes and secret are deleted on the first visit after midnight, at the latest by the daily cleanup, and immediately when you switch counting off or deactivate the plugin. Clicks sent from other websites are ignored. Behind Cloudflare the visitor address sent by Cloudflare is used; for other proxies there is the filter `sdcoach_besucher_adresse`. The counts stay in your WordPress database and are removed after 400 days while the plugin is active. Deleting the plugin removes the counts and the hashes. A click on a phone number is not a call, and the plugin does not pretend it is.
    4040
     41= Optional: detailed report by email =
     42
     43If you want more, the settings page offers the free, more detailed report of SEO Coach. It checks your homepage from the outside, including load time, HTTPS and content, explains every finding with instructions and sends the result as a PDF by email. The button opens the SEO Coach report page in a new tab, with your site address and the email address you entered already filled in. Nothing is sent until you start the check on that page yourself. You then get an email to confirm your address first, and after that the report. You only receive marketing emails if you explicitly tick a box for it.
     44
    4145= Optional: connect to SEO Coach =
    4246
    4347If you want to go further, you can connect your site to **SEO Coach** (https://meinseocoach.de), an external service by a German provider. It reads your own Google Search Console data, turns it into concrete suggestions, and writes titles, meta descriptions, content and schema back into WordPress when you approve them. Rank Math and Yoast are supported.
    4448
    45 This connection is **optional and you have to establish it yourself**. The plugin never sends data on its own. Only after you enter the API key shown in the plugin into your SEO Coach account can the service reach this site through the WordPress REST API. Details are under "External Services" below.
     49This connection is **optional and you have to establish it yourself**. The plugin never sends data on its own. Only after you enter the API key shown in the plugin into your SEO Coach account can the service use the plugin's endpoints in the WordPress REST API of this site. Details are under "External Services" below.
    4650
    4751== External Services ==
    … …  
    4953The plugin itself sends no data to external servers. The quick check (also when it runs once a day on its own), the AI crawler check, the llms.txt check and the sitemap check request your own website only. If you switch on inquiry counting, a small script reports clicks on phone and email links to your own website (the WordPress REST API of this site), nowhere else.
    5054
    51 Optionally, the site can be connected to the service **SEO Coach** (https://meinseocoach.de). To do that, you enter the API key generated by the plugin into your own SEO Coach account. After that, the service accesses this site through the WordPress REST API in order to
     55Optionally, you can request the detailed report of **SEO Coach** (https://app.meinseocoach.de/pruefbericht). When you click "open report", the plugin opens that page in a new tab and passes your site address (home URL) and the email address you entered in the URL fragment (the part after #, which browsers do not send to the server). The page only fills in its form with them. They are transmitted to SEO Coach only when you start the check on that page yourself, in order to run the check and to email you the report after you confirmed your address. The plugin stores only the time you last opened the report page, not the email address.
     56
     57Also optionally, the site can be connected to the service **SEO Coach** (https://meinseocoach.de). To do that, you enter the API key generated by the plugin into your own SEO Coach account. After that, the service accesses this site through the WordPress REST API in order to
    5258
    5359* read SEO fields (title, meta description, focus keyword) and change them on your instruction,
    … …  
    5763* read the inquiry counts, if you switched inquiry counting on.
    5864
    59 Without that key, entered by you, no data is exchanged. Provider: SEO Coach, https://meinseocoach.de. Privacy policy: https://app.meinseocoach.de/datenschutz. Terms: https://app.meinseocoach.de/agb.
     65Without that key, entered by you, the service cannot use the plugin's endpoints and cannot change anything on your site. (The detailed report above only reads your public homepage, like any visitor.) Provider: SEO Coach, https://meinseocoach.de. Privacy policy: https://app.meinseocoach.de/datenschutz. Terms: https://app.meinseocoach.de/agb.
    6066
    6167== Installation ==
    … …  
    7379= Does the plugin send data to third parties? =
    7480
    75 Not on its own. Only after you enter the API key into your SEO Coach account can that service reach your site. See "External Services".
     81Not on its own. If you request the detailed report, your site address and email address are sent to SEO Coach only when you start the check on its page yourself. Only after you enter the API key into your SEO Coach account can that service use the plugin's endpoints and make changes you approve. See "External Services".
    7682
    7783= What does it mean when a crawler is "blocked"? =
    … …  
    108114
    109115== Changelog ==
     116
     117= 3.8.0 =
     118* New: request the free, more detailed SEO Coach report by email right from the settings page. The address field is prefilled with the admin email and can be changed. Nothing is sent until you start the check on the report page yourself.
     119* New: the step bar now has four steps: check, detailed report, Google, SEO Coach.
     120* New: after the check, a short note explains what green checkmarks mean and what the homepage check cannot see (clicks and rankings).
     121* Improved: the SEO Coach card explains what the service shows, how the free start works, and links to sign-up and a demo with sample data.
     122* New: free personal help with the first Search Console setup.
    110123
    111124= 3.7.0 =
  • pruefbericht-seo-quick-check/tags/3.8.0/uninstall.php

    r3765225 r3773271  
    5858    delete_option( 'sdcoach_letzte_pruefung' );
    5959    delete_option( 'sdcoach_coach_connected_at' );
     60    delete_option( 'sdcoach_bericht_gestartet_at' );
    6061    delete_option( 'sdcoach_db_version' );
    6162    delete_option( 'sdcoach_anfragen_aktiv' );
  • pruefbericht-seo-quick-check/trunk/pruefbericht-seo-quick-check.php

    r3765225 r3773271  
    44 * Plugin URI:        https://meinseocoach.de
    55 * Description:       SEO-Werkzeuge für WordPress: SEO-Quick-Check, KI-Bereitschaft (dürfen GPTBot, ClaudeBot und Co. lesen?), llms.txt erzeugen, Sitemap-Status und Google-Search-Console-Verifikation. Optional verbindbar mit dem SEO Coach (externer Dienst).
    6  * Version:           3.7.0
     6 * Version:           3.8.0
    77 * Requires at least: 5.8
    88 * Requires PHP:      7.4
    … …  
    1818}
    1919
    20 define( 'SDCOACH_VERSION', '3.7.0' );
     20define( 'SDCOACH_VERSION', '3.8.0' );
    2121define( 'SDCOACH_MIN_VERSION', '2.1.0' ); // Dashboard erwartet mindestens diese Version
    2222// Prefix-Konvention: Alle plugineigenen Funktionen, Options, Transients, Post-Meta und
    … …  
    738738
    739739    wp_safe_redirect( add_query_arg( 'sdcoach-checked', '1', admin_url( 'options-general.php?page=pruefbericht-seo-quick-check' ) ) );
     740    exit;
     741}
     742
     743// ─── Admin-Post-Handler: Prüfbericht per E-Mail anfordern (seit 3.8.0) ───────
     744//
     745// Das Plugin verschickt selbst keine Mail. Es öffnet den Prüfbericht des SEO Coach in
     746// einem neuen Tab, Adresse und E-Mail sind dort vorbefüllt. Übertragen wird erst, wenn
     747// der Nutzer dort die Bot-Prüfung löst und auf Prüfen klickt; danach kommt zuerst eine
     748// Bestätigungsmail. Die Werte stehen im Hash, der nie an einen Server geht.
     749
     750define( 'SDCOACH_PRUEFBERICHT_URL', 'https://app.meinseocoach.de/pruefbericht' );
     751
     752add_action( 'admin_post_sdcoach_bericht_anfordern', 'sdcoach_handle_bericht_anfordern_action' );
     753
     754function sdcoach_handle_bericht_anfordern_action() {
     755    if ( ! current_user_can( 'manage_options' ) ) {
     756        wp_die( esc_html__( 'Keine Berechtigung.', 'pruefbericht-seo-quick-check' ) );
     757    }
     758    check_admin_referer( 'sdcoach_bericht_anfordern' );
     759
     760    $email = isset( $_POST['sdcoach_bericht_email'] ) ? sanitize_email( wp_unslash( $_POST['sdcoach_bericht_email'] ) ) : '';
     761    if ( ! is_email( $email ) ) {
     762        wp_safe_redirect( add_query_arg( 'sdcoach-bericht', 'ungueltig', admin_url( 'options-general.php?page=pruefbericht-seo-quick-check' ) ) . '#sdcoach-bericht' );
     763        exit;
     764    }
     765
     766    // Nur der Zeitpunkt, nicht die Adresse: Ob der Nutzer drüben wirklich prüfen ließ,
     767    // weiß das Plugin nicht. Deshalb „gestartet“, nie „angefordert“.
     768    update_option( 'sdcoach_bericht_gestartet_at', time(), false );
     769
     770    $ziel = SDCOACH_PRUEFBERICHT_URL . '#' . http_build_query(
     771        [
     772            'url'   => home_url( '/' ),
     773            'email' => $email,
     774        ],
     775        '',
     776        '&',
     777        PHP_QUERY_RFC3986
     778    );
     779    // Den fremden Host nur für diese eine Weiterleitung erlauben, nicht für die ganze Website.
     780    add_filter(
     781        'allowed_redirect_hosts',
     782        static function ( $hosts ) {
     783            $hosts[] = (string) wp_parse_url( SDCOACH_PRUEFBERICHT_URL, PHP_URL_HOST );
     784            return $hosts;
     785        }
     786    );
     787    // 303, damit der Browser drüben eine normale Seite lädt und das Formular nicht erneut sendet.
     788    wp_safe_redirect( $ziel, 303 );
    740789    exit;
    741790}
    … …  
    13211370
    13221371    // Schritt-Status: erledigt = Haken, erster offener Schritt = hervorgehoben
     1372    $bericht_gestartet = (int) get_option( 'sdcoach_bericht_gestartet_at', 0 );
    13231373    $step_done = [
    13241374        1 => (bool) get_option( 'sdcoach_quick_check_done_at', 0 ) || ( is_array( $check ) && empty( $check['error'] ) ),
    1325         2 => $token !== '' || $gsc_datei !== '',
    1326         3 => (bool) get_option( 'sdcoach_coach_connected_at', 0 ),
     1375        2 => $bericht_gestartet > 0,
     1376        3 => $token !== '' || $gsc_datei !== '',
     1377        4 => (bool) get_option( 'sdcoach_coach_connected_at', 0 ),
    13271378    ];
    1328     $current_step = 4; // 4 = alles erledigt
    1329     foreach ( [ 1, 2, 3 ] as $s ) {
     1379    $current_step = 5; // 5 = alles erledigt
     1380    foreach ( [ 1, 2, 3, 4 ] as $s ) {
    13301381        if ( ! $step_done[ $s ] ) {
    13311382            $current_step = $s;
    … …  
    13351386    $steps = [
    13361387        1 => __( 'Schritt 1: Website prüfen', 'pruefbericht-seo-quick-check' ),
    1337         2 => __( 'Schritt 2: Google verbinden', 'pruefbericht-seo-quick-check' ),
    1338         3 => __( 'Schritt 3: Coach verbinden (optional)', 'pruefbericht-seo-quick-check' ),
     1388        2 => $step_done[2]
     1389            ? __( 'Schritt 2: Prüfbericht gestartet', 'pruefbericht-seo-quick-check' )
     1390            : __( 'Schritt 2: Prüfbericht per E-Mail', 'pruefbericht-seo-quick-check' ),
     1391        3 => __( 'Schritt 3: Google verbinden', 'pruefbericht-seo-quick-check' ),
     1392        4 => __( 'Schritt 4: Coach verbinden (optional)', 'pruefbericht-seo-quick-check' ),
    13391393    ];
    13401394    $chip_done   = 'background:#e7f7d3;border:1px solid #b5e08a;border-radius:999px;padding:4px 12px;color:#3a5a13;';
    … …  
    13501404                <?php if ( $num > 1 ) : ?><span aria-hidden="true">→</span><?php endif; ?>
    13511405                <?php if ( $step_done[ $num ] ) : ?>
    1352                     <span style="<?php echo esc_attr( $chip_done ); ?>">✓ <?php echo esc_html( $label ); ?></span>
     1406                    <?php // Beim Prüfbericht kein Haken: Ob er drüben wirklich angefordert wurde, sieht das Plugin nicht. ?>
     1407                    <span style="<?php echo esc_attr( $chip_done ); ?>"><?php echo 2 === $num ? '↗' : '✓'; ?> <?php echo esc_html( $label ); ?></span>
    13531408                <?php elseif ( $num === $current_step ) : ?>
    13541409                    <span style="<?php echo esc_attr( $chip_active ); ?>"><?php echo esc_html( $label ); ?></span>
    … …  
    13571412                <?php endif; ?>
    13581413            <?php endforeach; ?>
    1359             <?php if ( 4 === $current_step ) : ?>
     1414            <?php if ( 5 === $current_step ) : ?>
    13601415                <span style="color:#3a5a13;font-weight:600;">🎉 <?php esc_html_e( 'Alles eingerichtet!', 'pruefbericht-seo-quick-check' ); ?></span>
    13611416            <?php endif; ?>
    … …  
    13691424        $sdcoach_sichtbar       = isset( $_GET['sdcoach-sichtbar'] ) ? sanitize_key( wp_unslash( $_GET['sdcoach-sichtbar'] ) ) : '';
    13701425        $sdcoach_notice_llms    = isset( $_GET['sdcoach-llms'] ) ? sanitize_key( wp_unslash( $_GET['sdcoach-llms'] ) ) : '';
     1426        $sdcoach_notice_bericht = isset( $_GET['sdcoach-bericht'] ) ? sanitize_key( wp_unslash( $_GET['sdcoach-bericht'] ) ) : '';
    13711427        // phpcs:enable WordPress.Security.NonceVerification.Recommended
    13721428        ?>
    … …  
    14871543                        $check['gsc_meta'] ? __( 'Google-Verifikations-Tag aktiv', 'pruefbericht-seo-quick-check' ) : __( 'Kein Google-Verifikations-Tag', 'pruefbericht-seo-quick-check' ),
    14881544                        $check['gsc_meta'] ? 'ok' : 'warn',
    1489                         $check['gsc_meta'] ? '' : __( 'Siehe Abschnitt 2 unten: Search Console verbinden.', 'pruefbericht-seo-quick-check' )
     1545                        $check['gsc_meta'] ? '' : __( 'Siehe Abschnitt 3 unten: Search Console verbinden.', 'pruefbericht-seo-quick-check' )
    14901546                    );
    14911547                    ?>
    … …  
    15691625                    ?>
    15701626                </p>
     1627                <p class="description">
     1628                    <?php esc_html_e( 'Geprüft wurden die technischen Grundlagen deiner Startseite. Ob du bei Google gefunden und angeklickt wirst und auf welchem Platz du stehst, sieht dieser Check nicht. Ein grüner Haken heißt: Die Grundlage stimmt. Er heißt nicht, dass die Website fertig optimiert ist.', 'pruefbericht-seo-quick-check' ); ?>
     1629                </p>
    15711630            <?php elseif ( is_array( $check ) && ! empty( $check['error'] ) ) : ?>
    15721631                <p><?php esc_html_e( 'Die Startseite konnte nicht abgerufen werden:', 'pruefbericht-seo-quick-check' ); ?> <code><?php echo esc_html( $check['error'] ); ?></code></p>
    … …  
    15811640        </div>
    15821641
    1583         <!-- Karte 2: Google Search Console -->
     1642        <!-- Karte 2: Ausführlicher Prüfbericht per E-Mail (seit 3.8.0) -->
     1643        <div id="sdcoach-bericht" style="<?php echo esc_attr( $card ); ?>">
     1644            <h2 style="margin-top:0;"><?php esc_html_e( '2. Ausführlicher Prüfbericht per E-Mail', 'pruefbericht-seo-quick-check' ); ?></h2>
     1645            <p>
     1646                <?php esc_html_e( 'Der kostenlose Prüfbericht des SEO Coach geht weiter als der Check oben: Er prüft deine Startseite von außen, unter anderem Ladezeit, HTTPS und Inhalt, erklärt jeden Befund mit einer Anleitung und schickt dir das Ergebnis als PDF per E-Mail.', 'pruefbericht-seo-quick-check' ); ?>
     1647            </p>
     1648            <?php if ( 'ungueltig' === $sdcoach_notice_bericht ) : ?>
     1649                <p style="color:#b32d2e;"><?php esc_html_e( 'Das ist keine gültige E-Mail-Adresse. Bitte prüfe die Eingabe.', 'pruefbericht-seo-quick-check' ); ?></p>
     1650            <?php endif; ?>
     1651            <form method="post" action="<?php echo esc_url( admin_url( 'admin-post.php' ) ); ?>" target="_blank" rel="noopener">
     1652                <?php wp_nonce_field( 'sdcoach_bericht_anfordern' ); ?>
     1653                <input type="hidden" name="action" value="sdcoach_bericht_anfordern" />
     1654                <label for="sdcoach-bericht-email"><?php esc_html_e( 'Deine E-Mail-Adresse:', 'pruefbericht-seo-quick-check' ); ?></label><br />
     1655                <input type="email" id="sdcoach-bericht-email" name="sdcoach_bericht_email" value="<?php echo esc_attr( (string) get_option( 'admin_email', '' ) ); ?>" required style="width:320px;margin:4px 8px 4px 0;" />
     1656                <button type="submit" class="button button-primary"><?php esc_html_e( 'Prüfbericht öffnen (neuer Tab)', 'pruefbericht-seo-quick-check' ); ?></button>
     1657            </form>
     1658            <p class="description">
     1659                <?php esc_html_e( 'Es öffnet sich die Seite des SEO Coach (app.meinseocoach.de). Deine Website-Adresse und diese E-Mail-Adresse sind dort schon eingetragen. Übertragen werden sie erst, wenn du dort auf Prüfen klickst. Danach bekommst du eine Mail, in der du deine Adresse bestätigst, und dann den Bericht. Werbung bekommst du nur, wenn du das ausdrücklich ankreuzt.', 'pruefbericht-seo-quick-check' ); ?>
     1660                <a href="https://app.meinseocoach.de/datenschutz" target="_blank" rel="noopener"><?php esc_html_e( 'Datenschutz', 'pruefbericht-seo-quick-check' ); ?></a>
     1661            </p>
     1662            <?php if ( $bericht_gestartet > 0 ) : ?>
     1663                <p class="description">
     1664                    <?php
     1665                    /* translators: %s: date and time when the report page was last opened */
     1666                    printf( esc_html__( 'Zuletzt geöffnet am %s. Keine Mail bekommen? Schau im Spam-Ordner nach oder öffne den Prüfbericht noch einmal.', 'pruefbericht-seo-quick-check' ), esc_html( wp_date( 'd.m.Y H:i', $bericht_gestartet ) ) );
     1667                    ?>
     1668                </p>
     1669            <?php endif; ?>
     1670        </div>
     1671
     1672        <!-- Karte 3: Google Search Console -->
    15841673        <div style="<?php echo esc_attr( $card ); ?>">
    1585             <h2 style="margin-top:0;"><?php esc_html_e( '2. Google Search Console verbinden', 'pruefbericht-seo-quick-check' ); ?></h2>
     1674            <h2 style="margin-top:0;"><?php esc_html_e( '3. Google Search Console verbinden', 'pruefbericht-seo-quick-check' ); ?></h2>
    15861675            <?php if ( $token || $gsc_datei ) : ?>
    15871676                <p><?php
    … …  
    16451734                <?php endif; ?>
    16461735            </form>
     1736            <p class="description" style="margin-top:12px;">
     1737                <?php esc_html_e( 'Kommst du mit der Search Console nicht weiter? Markus vom SEO Coach hilft dir bei der ersten Einrichtung kostenlos und persönlich. Schreib einfach an', 'pruefbericht-seo-quick-check' ); ?>
     1738                <a href="mailto:support@meinseocoach.de">support@meinseocoach.de</a>
     1739            </p>
    16471740        </div>
    16481741
    1649         <!-- Karte 3: SEO Coach Verbindung -->
     1742        <!-- Karte 4: SEO Coach Verbindung -->
    16501743        <div style="<?php echo esc_attr( $card ); ?>">
    1651             <h2 style="margin-top:0;"><?php esc_html_e( '3. Mit SEO Coach verbinden (optional)', 'pruefbericht-seo-quick-check' ); ?></h2>
     1744            <h2 style="margin-top:0;"><?php esc_html_e( '4. Mit SEO Coach verbinden (optional)', 'pruefbericht-seo-quick-check' ); ?></h2>
    16521745            <p>
    1653                 <?php esc_html_e( 'SEO Coach ist ein externer Dienst (meinseocoach.de), der deine Search-Console-Daten analysiert und Optimierungen per Klick zurück in WordPress schreibt. Die Verbindung ist freiwillig: Erst wenn du diesen API-Key dort einträgst, kann der Dienst auf die Inhalte dieser Website zugreifen.', 'pruefbericht-seo-quick-check' ); ?>
     1746                <?php esc_html_e( 'Der SEO Coach ist ein externer Dienst (meinseocoach.de). Er liest deine eigenen Search-Console-Daten und zeigt dir, was dieser Check nicht sehen kann:', 'pruefbericht-seo-quick-check' ); ?>
     1747            </p>
     1748            <ul style="list-style:disc;margin-left:20px;">
     1749                <li><?php esc_html_e( 'wie oft du bei Google gefunden und angeklickt wirst, mit welchen Suchbegriffen und auf welchem Platz', 'pruefbericht-seo-quick-check' ); ?></li>
     1750                <li><?php esc_html_e( 'Seiten, die knapp vor der ersten Google-Seite stehen, und Seiten, die Klicks verlieren', 'pruefbericht-seo-quick-check' ); ?></li>
     1751                <li><?php esc_html_e( 'jede Woche eine Ranking-Meldung und jeden Monat einen Bericht per E-Mail', 'pruefbericht-seo-quick-check' ); ?></li>
     1752                <li><?php esc_html_e( 'neue Titel und Beschreibungen, die er nach deiner Freigabe in WordPress einträgt (ab Starter)', 'pruefbericht-seo-quick-check' ); ?></li>
     1753            </ul>
     1754            <p>
     1755                <strong><?php esc_html_e( 'Kostenlos starten:', 'pruefbericht-seo-quick-check' ); ?></strong>
     1756                <?php esc_html_e( '7 Tage alle Starter-Funktionen, danach automatisch im Gratis-Tarif. Keine Kreditkarte, keine automatische kostenpflichtige Verlängerung.', 'pruefbericht-seo-quick-check' ); ?>
     1757            </p>
     1758            <p>
     1759                <a class="button button-primary" href="https://app.meinseocoach.de/register" target="_blank" rel="noopener"><?php esc_html_e( 'Kostenloses Konto erstellen', 'pruefbericht-seo-quick-check' ); ?></a>
     1760                <a class="button" href="https://app.meinseocoach.de/demo" target="_blank" rel="noopener" style="margin-left:8px;"><?php esc_html_e( 'Demo mit Beispieldaten ansehen', 'pruefbericht-seo-quick-check' ); ?></a>
     1761            </p>
     1762            <h3 style="margin:20px 0 4px;"><?php esc_html_e( 'Schon ein Konto? So verbindest du diese Website', 'pruefbericht-seo-quick-check' ); ?></h3>
     1763            <p class="description">
     1764                <?php esc_html_e( 'Die Verbindung ist freiwillig: Erst wenn du diesen API-Key im SEO Coach einträgst, kann der Dienst auf die Inhalte dieser Website zugreifen.', 'pruefbericht-seo-quick-check' ); ?>
    16541765            </p>
    16551766            <table class="form-table">
    … …  
    16771788        </div>
    16781789
    1679         <!-- Karte 4: Anfragen zählen -->
     1790        <!-- Karte 5: Anfragen zählen -->
    16801791        <?php
    16811792        $sdcoach_anfragen_an      = sdcoach_anfragen_aktiv();
    … …  
    16881799        ?>
    16891800        <div id="sdcoach-anfragen" style="<?php echo esc_attr( $card ); ?>">
    1690             <h2 style="margin-top:0;"><?php esc_html_e( '4. Anfragen zählen (optional)', 'pruefbericht-seo-quick-check' ); ?></h2>
     1801            <h2 style="margin-top:0;"><?php esc_html_e( '5. Anfragen zählen (optional)', 'pruefbericht-seo-quick-check' ); ?></h2>
    16911802            <p>
    16921803                <?php esc_html_e( 'Zählt, wie viele Anfragen deine Website bringt: erfolgreich abgeschickte Formulare und Klicks auf Telefonnummern und E-Mail-Adressen. Ein Klick auf eine Nummer ist noch kein Anruf, aber ein gutes Zeichen.', 'pruefbericht-seo-quick-check' ); ?>
  • pruefbericht-seo-quick-check/trunk/readme.txt

    r3765225 r3773271  
    55Tested up to: 7.1
    66Requires PHP: 7.4
    7 Stable tag: 3.7.0
     7Stable tag: 3.8.0
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
    … …  
    3939Off by default. Once you switch it on, the plugin counts successful form submissions (Contact Form 7, WPForms, Gravity Forms, Elementor Pro, Fluent Forms, Ninja Forms) and clicks on phone numbers and email addresses on your site. Per day it stores only the type, the address of the published page and the form name you gave the form, as a number. No field contents, no cookies, no IP addresses. Page addresses and form names are stored as they are, so if a page slug or form name contains a person's name, so does the count. Pages that WordPress does not know as published, public pages are counted as "(other page)"; a page that a membership plugin protects on top is not recognised as such. Against abuse, a hash of the visitor's IP address is kept for the current day only, made with a random secret that exists only for that day. Hashes and secret are deleted on the first visit after midnight, at the latest by the daily cleanup, and immediately when you switch counting off or deactivate the plugin. Clicks sent from other websites are ignored. Behind Cloudflare the visitor address sent by Cloudflare is used; for other proxies there is the filter `sdcoach_besucher_adresse`. The counts stay in your WordPress database and are removed after 400 days while the plugin is active. Deleting the plugin removes the counts and the hashes. A click on a phone number is not a call, and the plugin does not pretend it is.
    4040
     41= Optional: detailed report by email =
     42
     43If you want more, the settings page offers the free, more detailed report of SEO Coach. It checks your homepage from the outside, including load time, HTTPS and content, explains every finding with instructions and sends the result as a PDF by email. The button opens the SEO Coach report page in a new tab, with your site address and the email address you entered already filled in. Nothing is sent until you start the check on that page yourself. You then get an email to confirm your address first, and after that the report. You only receive marketing emails if you explicitly tick a box for it.
     44
    4145= Optional: connect to SEO Coach =
    4246
    4347If you want to go further, you can connect your site to **SEO Coach** (https://meinseocoach.de), an external service by a German provider. It reads your own Google Search Console data, turns it into concrete suggestions, and writes titles, meta descriptions, content and schema back into WordPress when you approve them. Rank Math and Yoast are supported.
    4448
    45 This connection is **optional and you have to establish it yourself**. The plugin never sends data on its own. Only after you enter the API key shown in the plugin into your SEO Coach account can the service reach this site through the WordPress REST API. Details are under "External Services" below.
     49This connection is **optional and you have to establish it yourself**. The plugin never sends data on its own. Only after you enter the API key shown in the plugin into your SEO Coach account can the service use the plugin's endpoints in the WordPress REST API of this site. Details are under "External Services" below.
    4650
    4751== External Services ==
    … …  
    4953The plugin itself sends no data to external servers. The quick check (also when it runs once a day on its own), the AI crawler check, the llms.txt check and the sitemap check request your own website only. If you switch on inquiry counting, a small script reports clicks on phone and email links to your own website (the WordPress REST API of this site), nowhere else.
    5054
    51 Optionally, the site can be connected to the service **SEO Coach** (https://meinseocoach.de). To do that, you enter the API key generated by the plugin into your own SEO Coach account. After that, the service accesses this site through the WordPress REST API in order to
     55Optionally, you can request the detailed report of **SEO Coach** (https://app.meinseocoach.de/pruefbericht). When you click "open report", the plugin opens that page in a new tab and passes your site address (home URL) and the email address you entered in the URL fragment (the part after #, which browsers do not send to the server). The page only fills in its form with them. They are transmitted to SEO Coach only when you start the check on that page yourself, in order to run the check and to email you the report after you confirmed your address. The plugin stores only the time you last opened the report page, not the email address.
     56
     57Also optionally, the site can be connected to the service **SEO Coach** (https://meinseocoach.de). To do that, you enter the API key generated by the plugin into your own SEO Coach account. After that, the service accesses this site through the WordPress REST API in order to
    5258
    5359* read SEO fields (title, meta description, focus keyword) and change them on your instruction,
    … …  
    5763* read the inquiry counts, if you switched inquiry counting on.
    5864
    59 Without that key, entered by you, no data is exchanged. Provider: SEO Coach, https://meinseocoach.de. Privacy policy: https://app.meinseocoach.de/datenschutz. Terms: https://app.meinseocoach.de/agb.
     65Without that key, entered by you, the service cannot use the plugin's endpoints and cannot change anything on your site. (The detailed report above only reads your public homepage, like any visitor.) Provider: SEO Coach, https://meinseocoach.de. Privacy policy: https://app.meinseocoach.de/datenschutz. Terms: https://app.meinseocoach.de/agb.
    6066
    6167== Installation ==
    … …  
    7379= Does the plugin send data to third parties? =
    7480
    75 Not on its own. Only after you enter the API key into your SEO Coach account can that service reach your site. See "External Services".
     81Not on its own. If you request the detailed report, your site address and email address are sent to SEO Coach only when you start the check on its page yourself. Only after you enter the API key into your SEO Coach account can that service use the plugin's endpoints and make changes you approve. See "External Services".
    7682
    7783= What does it mean when a crawler is "blocked"? =
    … …  
    108114
    109115== Changelog ==
     116
     117= 3.8.0 =
     118* New: request the free, more detailed SEO Coach report by email right from the settings page. The address field is prefilled with the admin email and can be changed. Nothing is sent until you start the check on the report page yourself.
     119* New: the step bar now has four steps: check, detailed report, Google, SEO Coach.
     120* New: after the check, a short note explains what green checkmarks mean and what the homepage check cannot see (clicks and rankings).
     121* Improved: the SEO Coach card explains what the service shows, how the free start works, and links to sign-up and a demo with sample data.
     122* New: free personal help with the first Search Console setup.
    110123
    111124= 3.7.0 =
  • pruefbericht-seo-quick-check/trunk/uninstall.php

    r3765225 r3773271  
    5858    delete_option( 'sdcoach_letzte_pruefung' );
    5959    delete_option( 'sdcoach_coach_connected_at' );
     60    delete_option( 'sdcoach_bericht_gestartet_at' );
    6061    delete_option( 'sdcoach_db_version' );
    6162    delete_option( 'sdcoach_anfragen_aktiv' );
Note: See TracChangeset for help on using the changeset viewer.