Hooks und Filter
Die Stellen, an denen du Tarvexa per Code erweiterst.
Gilt für Tarvexa 1.0 · WooCommerceFilter und Aktionen
Was in den Einstellungen geht, geht auch per Code. Alle Namen beginnen mit tarvexa_. Die Beispiele gehören in ein eigenes Plugin oder in die functions.php deines Child-Themes.
tarvexa_feed_product_should_includeFilter. Nimmt ein Produkt aus allen Feeds.tarvexa_feed_completedAktion. Läuft nach jedem Feed-Lauf.tarvexa_feed_skippedAktion. Ein Lauf konnte nicht starten (Lizenz, Portal nicht lizenziert, keine Konfiguration). Bekommt die Profil-ID und den Grund. Ab Tarvexa 1.4.0.tarvexa_feed_run_lostAktion. Ein abgestürzter Lauf wurde aufgeräumt. Bekommt die Profil-ID. Ab Tarvexa 1.4.0.tarvexa_feed_log_limitFilter. Wie viele Einträge das Feed-Protokoll je Profil behält (Standard 50, erlaubt 10 bis 500). Ab Tarvexa 1.4.0.tarvexa_smtp_works_when_lockedFilter. false schaltet den SMTP-Versand ab, solange die Lizenz nicht gilt (Standard true: er läuft weiter). Ab Tarvexa 1.4.0.tarvexa_smtp_conflicting_pluginsFilter. Die SMTP-Plugins, für die Tarvexa beiseitetritt (Plugin-Datei und Name). Ab Tarvexa 1.4.0.tarvexa_feed_sourcesFilter. Registriert eigene Quelltypen für Spalten.tarvexa_feed_unit_priceFilter. Liefert den Grundpreis für die Spalten, die Tarvexa leer lässt.tarvexa_reverts_on_stockFilter. Überstimmt die Entscheidung des Sale-Preises nach Lagerbestand.tarvexa_savings_textFilter. Ändert den Satz der Ersparnis-Anzeige.tarvexa_auto_uvp_prefixFilter. Ändert den Text vor der UVP in der automatischen Anzeige für klassische Themes (Standard „UVP: “).tarvexa_uvp_variation_idFilter. Legt fest, welche Variante die UVP eines variablen Produkts liefert.tarvexa_feed_batch_sizeFilter. Zahl der Produkte je Etappe bei der Feed-Erzeugung.tarvexa_delivery_specFilter. Ändert die Arbeitstage, aus denen das Lieferdatum eines Produkts entsteht, oder gibt null zurück (kein Datum). Ab Tarvexa 1.3.2.tarvexa_delivery_configFilter. Ändert den Kalender der Lieferdatum-Berechnung: Bestellschluss, Samstag, Feiertage, freie Tage. Ab Tarvexa 1.3.2.tarvexa_delivery_date_formatFilter. Das PHP-Datumsformat des Lieferdatums (Standard D, j.n.). Ab Tarvexa 1.3.2.tarvexa_delivery_nowFilter. Ersetzt „jetzt“ in der Berechnung, nur für Tests gedacht. Ab Tarvexa 1.3.2.Produkte per Filter aus dem Feed nehmen
Der Filter läuft für jedes Produkt und jede Variante, nachdem alle Einstellungen des Profils geprüft wurden. Gibst du false zurück, fehlt das Produkt in allen Feeds.
// Produkte einer Kategorie aus allen Feeds nehmen
add_filter( 'tarvexa_feed_product_should_include', function ( $include, $product ) {
$id = $product->get_parent_id() ?: $product->get_id();
if ( has_term( 'muster', 'product_cat', $id ) ) {
return false;
}
return $include;
}, 10, 2 );Für ein einzelnes Profil nimmst du besser das Häkchen „Nicht in diesem Feed“ (siehe Produkte vom Feed ausschließen).
Nach einem Feed-Lauf etwas tun
Die Aktion läuft einmal, wenn ein Lauf zu Ende ist und sein Ergebnis gespeichert wurde: nach dem Austausch der Datei oder nachdem die Zeilenzahl-Sicherung die bisherige Datei behalten hat. Sie läuft nicht, wenn kein Lauf gestartet wurde (gesperrte Lizenz, Lauf bereits unterwegs).
add_action( 'tarvexa_feed_completed', function ( $profile_id, $state ) {
if ( 'ok' !== $state['status'] ) {
error_log( 'Feed ' . $profile_id . ': ' . $state['status'] );
}
}, 10, 2 );$state ist der gespeicherte Lauf: unter anderem status, row_count, warnings und error.
Grundpreis liefern
Die Spalten für den Grundpreis sind in den Vorlagen vorhanden, bleiben aber leer. Hast du den Grundpreis in einem Plugin oder in einem Feld, gibst du ihn über den Filter zurück. Das Format hängt vom Portal ab. Die Vorgaben der Portale zeigen Beispiele wie 59.90€ / 100 ml oder 64,30 € / 1 l.
add_filter( 'tarvexa_feed_unit_price', function ( $text, $product ) {
$value = get_post_meta( $product->get_id(), '_mein_grundpreis', true );
return $value ? $value : $text;
}, 10, 2 );Lieferzeit per Code ändern
Der Filter tarvexa_delivery_spec bekommt die Arbeitstage eines Produkts als Feld from, to und kind und die Menge im Warenkorb. Mit null entfällt das Datum, so wie bei einem ausverkauften Produkt. Siehe Lieferdatum im Shop anzeigen.
// Produkte der Kategorie "sperrgut" brauchen zwei Arbeitstage länger
add_filter( 'tarvexa_delivery_spec', function ( $spec, $product, $quantity ) {
$id = $product->get_parent_id() ?: $product->get_id();
if ( $spec && has_term( 'sperrgut', 'product_cat', $id ) ) {
$spec['from'] += 2;
$spec['to'] += 2;
}
return $spec;
}, 10, 3 );Eigene Quellen für Spalten
tarvexa_feed_sources bekommt die Liste der Quelltypen (core_field, attribute, meta, taxonomy, static, computed) und darf eigene hinzufügen. Der Hook ist für Erweiterungen gedacht. Die genaue Form eines Quelltyps entnimmst du dem Code des Plugins.