Hooks sind Filter und Actions, mit denen sich OBS-Core anpassen lässt, ohne den Originalcode zu ändern. Dieser Beitrag zeigt das Grundmuster und die wichtigsten OBS-Filter für Navigation und Produkt-Blöcke.
Was Hooks sind
Hooks sind Filter oder Actions, mit denen sich Code vor der Ausgabe oder Weiterverarbeitung verändern lässt. Der Vorteil: Anpassungen greifen ohne Änderung am Originalcode und werden von Updates nicht überschrieben. Eigene Hooks gehören in die functions.php eines Child-Themes.
Grundmuster
// Filter
function your_function_name( $value ) {
// TODO: eigenen Inhalt einsetzen
return $value;
}
add_filter( 'hook_name', 'your_function_name', 10, 1 );
// Action
function your_action_name {
// TODO: eigenen Code ausführen
}
add_action( 'hook_name', 'your_action_name', 10, 1 );Warenkorb-Symbol im Menü
Der Filter obs_navigation_menu_cart_item verändert die Darstellung des Warenkorb-Symbols im Menü, wenn dieses als letzter Menüpunkt eingebunden ist. Er läuft, nachdem das Standarddesign erstellt wurde und bevor der Menüpunkt ausgegeben wird.
add_filter( 'obs_navigation_menu_cart_item', 'custom_menu_cart_item', 10, 3 );
function custom_menu_cart_item( $cart_menu_item, $items, $args ) {
// TODO: $cart_menu_item gestalten
return $cart_menu_item;
}Produkt-Blöcke „Kaufen“ und „Breadcrumb“
Für die Produktseite gibt es Filter, die vor bzw. nach der Erstellung der HTML-Darstellung greifen:
obs_product_before_replace_buy/obs_product_after_replace_buy– der Kaufen-Blockobs_product_before_replace_breadcrumb/obs_product_after_replace_breadcrumb– der
(Warenkorb-Button)
Breadcrumb-Block
Ein before-Filter kann entweder die Parameter des Standard-Designs verändern (dazu null zurückgeben) oder die Darstellung komplett selbst erzeugen (die Darstellung als String zurückgeben):
add_filter( 'obs_product_before_replace_buy', 'custom_buy_design', 10, 2 );
function custom_buy_design( $html_buy, $explore_path ) {
// TODO: $html_buy erzeugen oder $explore_path anpassen
return $html_buy;
}WEITERLESEN