Der obs_structured_data_before_product Filter filtert die Ausgabe der strukturierten Daten für ein Produkt, die auf Produkt -und Kategorieseiten ausgegeben werden.

Auf einer Produktseite wird nur das eine Produkt der Seite ausgeliefert, auf Kategorieseiten werden alle initial geladenen Produkte als Liste ausgeliefert.

Die strukturierten Daten werden als JSON-LD im Header ausgeliefert.

Dieser Filter läuft, bevor die HTML-Representation erstellt wird. Der Filter kann genutzt werden, um

  • die Parameter, die der Standard-Funktion übergeben werden, zu verändern bevor das Standard-Design angewendet wird
    (dazu null returnen, der erste Parameter ist null)
  • die Darstellung der strukturierten Daten selbst zu erstellen
    (dazu die neue Darstellung als String returnen)

Beispiel-Anwendung über functions.php in Child-Theme

Verändern der Parameter, Standard-Design:

add_filter( 'obs_structured_data_before_product', 'custom_structured_data_brefore_product', 10, 3 );
function custom_structured_data_brefore_product( $structured_data_before_product, $class, &$explore_path_product_data) {
    // TODO: change the $class or the $$explore_path_product_data.
    return $structured_data_before_product;
}

Eigenes Design:

add_filter( 'obs_structured_data_before_product', 'custom_structured_data_brefore_product', 10, 3 );
function custom_structured_data_brefore_product( $structured_data_before_product, $class, &$explore_path_product_data ) {
    // TODO: change the $structured_data_before_product content.
    return $structured_data_before_product;
}

Anleitung zum Nutzen von Child-Themes und Integration in functions.php

Anleitung zur Integration von Hooks

Eine Integration im Code

/**
 * Filter the structured data for a product on both Category Pages and Product Pages before creation.
 *
 * Return null to use the default build-up.
 * Otherwise, the default will be skipped and the returned content (array) given back as structured data.
 *
 * Call the $explore_path_product_data by reference when attempting to edit it before applying standard design.
 *
* @param array|null $structured_data_product   Return an array to use as product structured data or return null to use the default.
 * @param string     $class                     Name of the class: Either Oneboxshop_Category_Page or Oneboxshop_Product_Page.
 * @param array      $explore_path_product_data The data of one product, from Elasticsearch.
 */
$structured_data_product = apply_filters_ref_array(
	'obs_structured_data_before_product',
	array(
		null,
		$class,
		&$explore_path_product_data,
	)
);