E-Commerce und EinzelhandelBezahltes und organisches Suchmaschinenmarketing

WooCommerce: Admin-Filter zum Finden von Produkten ohne Produktbildsatz

Wir helfen einem Kunden, der über eine WordPress-WooCommerce-Website verfügt, die aufgrund jahrelanger Vernachlässigung, installierter und deinstallierter Plugins und Dutzender Themes aufgrund Hunderter Code-, Konfigurations- und Inhaltsprobleme aufgrund jahrelanger Vernachlässigung an Suchmaschinensichtbarkeit verloren hat.

Beim Start der neuen Website haben wir die Leistung der Website beobachtet und kürzlich die folgende Google Search Console-Meldung erhalten:

Google Search Console – Händlerlisten – Strukturierte Daten – Problembild

Wir waren überrascht, dass das Unternehmen Produkte in WooCommerce gelistet hatte, für die kein Produktbild festgelegt war. Als wir die neu gestartete Website gecrawlt haben, konnten wir keine Probleme feststellen. Dies lag daran, dass das neue Theme über ein Platzhalterbild verfügte, das immer dann angezeigt wurde, wenn kein Bild festgelegt war. Infolgedessen gab es keine Fehler für nicht gefundene Bilder.

WooCommerce-Produktliste

Unser nächster Schritt bestand darin, die Produkte auf der Website zu identifizieren, für die keine Bilder eingestellt waren. Das ist keine leichte Aufgabe, wenn Hunderte von Produkten gefiltert werden müssen. Aus diesem Grund haben wir in WooCommerce-Produkten einen eigenen Filter geschrieben, um die Liste nach Produkten zu filtern, für die kein Produktbild festgelegt ist.

Filter-Produktbild-nicht festgelegt

Jetzt können wir die Liste einfach durchsuchen und die Produktbilder bei Bedarf ohne Aufwand aktualisieren. So haben wir es gemacht.

Filter zur WooCommerce-Admin-Produktliste hinzufügen

Auf der Seite „functions.php“ des untergeordneten Themes des Kunden haben wir die folgenden zwei Codeabschnitte hinzugefügt. Zuerst bauen wir das Filterfeld auf:

// Add a filter on product for set product image
add_action('restrict_manage_posts', 'filter_products_by_image_presence');
function filter_products_by_image_presence() {
    global $typenow;
    $selected = isset($_GET['product_image_presence']) ? $_GET['product_image_presence'] : '';
    if ('product' === $typenow) {
        ?>
        <select name="product_image_presence" id="product_image_presence">
            <option value="">Filter by product image</option>
            <option value="set" <?php selected('set', $selected); ?>>Image Set</option>
            <option value="notset" <?php selected('notset', $selected); ?>>Image Not Set</option>
        </select>
        <?php
    }
}

Hier finden Sie eine Schritt-für-Schritt-Erklärung der einzelnen Teile des Codes:

  • add_action('restrict_manage_posts', 'filter_products_by_image_presence');
    • Diese Linie hakt ein restrict_manage_posts, eine Aktion, die im WordPress-Administrationsbereich ausgelöst wird und es Ihnen ermöglicht, zusätzliche Filteroptionen zur Beitragsliste hinzuzufügen. Hier wird es verwendet, um einen neuen Filter zur WooCommerce-Produktliste hinzuzufügen.
  • function filter_products_by_image_presence() { ... }
    • Dieser Block definiert die Funktion filter_products_by_image_presence, das HTML für einen neuen Dropdown-Auswahlfilter auf dem Produktadministrationsbildschirm ausgibt.
  • global $typenow;
    • Die globale Variable $typenow wird verwendet, um den Typ der aktuellen Beitragsliste zu überprüfen, um sicherzustellen, dass der benutzerdefinierte Filter nur zu den Beitragstypbildschirmen „Produkte“ und nicht zu anderen hinzugefügt wird.
  • $selected = isset($_GET['product_image_presence']) ? $_GET['product_image_presence'] : '';
    • Diese Zeile prüft, ob ein aktiver Filtersatz vorhanden ist, indem sie nach dem Parameter „product_image_presence“ in der URL sucht, der als GET-Anfrage übergeben wird, wenn Sie eine Filteroption auswählen und den Filter senden. Es speichert die aktuelle Auswahl, um den ausgewählten Status des Filters nach dem Neuladen der Seite beizubehalten.
  • if ('product' === $typenow) { ... }
    • Diese bedingte Anweisung prüft, ob der aktuelle Beitragstyp „Produkt“ ist, und stellt so sicher, dass der Code in der if-Anweisung nur für WooCommerce-Produkte ausgeführt wird.
    • Alles dazwischen ?> kombiniert mit einem nachhaltigen Materialprofil. <?php ist eine HTML-Ausgabe, einschließlich der Auswahl-Dropdown-Liste mit Optionen zum Filtern nach Produkten mit „Bild eingestellt“ oder „Bild nicht eingestellt“. PHP ist eingestreut, um die dynamische Auswahl über zu handhaben selected() Funktion, die die ausgibt selected Attribut, wenn das aktuelle $selected Der Wert entspricht dem Optionswert.
    • Das selected() Funktion ist eine WordPress-Hilfsfunktion, die das erste Argument mit dem zweiten vergleicht und bei Übereinstimmung „selected=“selected“ ausgibt, das HTML-Attribut, das benötigt wird, um eine Option als ausgewählt in einem Dropdown anzuzeigen.

Dieser Code fügt der Produktliste effektiv einen Dropdown-Filter hinzu, der es dem Administrator ermöglicht, die Liste nach Produkten zu filtern, für die ein Bildsatz vorhanden ist oder nicht. Dieser zusätzliche Filter würde Benutzern bei der Verwaltung großer Kataloge helfen und sicherstellen, dass die Produkte den Anforderungen des Store-Eintrags entsprechen, einschließlich der Zuweisung von Bildern als Teil der Qualitätskontrolle des Eintrags.

Führen Sie eine Abfrage für die WooCommerce-Admin-Produktliste aus

Als nächstes müssen wir eine Abfrage hinzufügen, die die Produkte ausführt und findet, für die kein Bildsatz vorhanden ist.

add_filter('parse_query', 'filter_products_query_by_image_presence');
function filter_products_query_by_image_presence($query) {
    global $pagenow, $typenow;

    if ('edit.php' === $pagenow && 'product' === $typenow && isset($_GET['product_image_presence']) && $_GET['product_image_presence'] != '') {
        $presence = $_GET['product_image_presence'];
        $meta_query = array(
            'relation' => 'OR',
            array(
                'key' => '_thumbnail_id',
                'compare' => 'NOT EXISTS'
            ),
            array(
                'key' => '_thumbnail_id',
                'value' => '0'
            )
        );

        if ('set' === $presence) {
            $meta_query = array(
                array(
                    'key' => '_thumbnail_id',
                    'compare' => 'EXISTS'
                ),
                array(
                    'key' => '_thumbnail_id',
                    'value' => array('', '0'), // Assuming '0' or '' could be placeholders for no image.
                    'compare' => 'NOT IN'
                ),
            );
        } elseif ('notset' === $presence) {
            $meta_query = array(
                'relation' => 'OR',
                array(
                    'key' => '_thumbnail_id',
                    'compare' => 'NOT EXISTS'
                ),
                array(
                    'key' => '_thumbnail_id',
                    'value' => '0'
                )
            );
        }

        $query->set('meta_query', $meta_query);
    }
}

Dieses Code-Snippet dient zum Ändern der WordPress-Hauptabfrage für Produktlisten im Admin-Bereich, um das Filtern von Produkten basierend darauf zu ermöglichen, ob sie über ein zugehöriges Bild verfügen. Hier ist eine Erklärung seiner Komponenten:

  • add_filter('parse_query', 'filter_products_query_by_image_presence');
    • Diese Zeile hängt die an filter_products_query_by_image_presence Funktion für die parse_query Filter-Hook, der zum Anpassen der Hauptabfrage verwendet wird, die WordPress zum Abrufen von Beiträgen (oder benutzerdefinierten Beitragstypen wie Produkten) in der Admin-Listentabelle verwendet.
  • function filter_products_query_by_image_presence($query) { ... }
    • Diese Funktion ist so definiert, dass sie die Produktlistenabfrage basierend auf dem Vorhandensein von Produktbildern ändert. Der $query Variable ist eine Instanz von WP_Query Klasse, die als Referenz übergeben wird, was bedeutet, dass sich alle Änderungen an diesem Objekt auf die tatsächliche Abfrage auswirken, die WordPress ausführt.
  • global $pagenow, $typenow;
    • Diese globalen Variablen sind WordPress-Umgebungsvariablen. $pagenow wird verwendet, um die aktuelle Admin-Seite zu überprüfen, und $typenow um den aktuellen Beitragstyp zu überprüfen.
    • Die bedingte Anweisung prüft, ob die aktuelle Seite „edit.php“ ist (die Standardseite zum Auflisten von Beiträgen und benutzerdefinierten Beitragstypen), der Beitragstyp „Produkt“ ist (was bedeutet, dass wir uns auf der WooCommerce-Produktliste befinden) und ob a Filter wurde durch a gesetzt GET Parameter mit dem Namen „product_image_presence“.
  • Basierend auf dem Wert von „product_image_presence“ wird ein neues Metaabfrage-Array erstellt. Dieses Array soll die Voraussetzungen für die Filterung von Produkten mit oder ohne Bildern schaffen.
    • Das relation Der auf „OR“ gesetzte Schlüssel gibt an, dass jede der darin enthaltenen Bedingungen für die Metaabfrage zum Abrufen der Produkte wahr sein kann.
    • Wenn der Filter auf „set“ gesetzt ist, wird ein neuer $meta_query wurde erstellt, um Produkte mit Bildern zu finden. Produkte, die eine „_thumbnail_id“ (was bedeutet, dass ein Bild festgelegt ist) und keine leere Zeichenfolge oder „0“ haben, sind enthalten.
    • Wenn der Filter auf „notset“ gesetzt ist, sucht die Metaabfrage nach Produkten, bei denen der Metaschlüssel „_thumbnail_id“ entweder nicht existiert oder auf „0“ gesetzt ist, was bedeuten würde, dass dem Produkt kein Bild zugeordnet ist.
  • $query->set('meta_query', $meta_query);
    • Diese Zeile ändert die Hauptabfrage, indem sie „meta_query“ mit den in definierten Bedingungen festlegt $meta_query.

Diese Anpassung hilft einem WooCommerce-Shop-Administrator, Produkte ohne Bilder schnell zu finden, was für die Bestandsverwaltung, Marketing- und Vertriebsstrategien von entscheidender Bedeutung ist, da Produkte mit Bildern eher verkauft werden und Kunden die notwendigen visuellen Informationen liefern. Indem sichergestellt wird, dass Produktlisten vollständig mit Bildern versehen sind, können Vertriebs- und Marketingbemühungen effektiver sein.

Ähnliche Artikel

Nach oben-Taste
Menu

Adblock erkannt

Wir sind auf Anzeigen und Sponsoring angewiesen, um Martech Zone Kostenlos. Bitte deaktivieren Sie Ihren Werbeblocker – oder unterstützen Sie uns mit einer günstigen, werbefreien Jahresmitgliedschaft (10 US-Dollar):

Melden Sie sich für eine Jahresmitgliedschaft an