Wenn remove_action nicht funktioniert, kann es daran liegen, dass diese Funktion ausgeführt wird, before die add_action von WordPress abgearbeitet wurde. Dieser Fall liegt fast immer vor, wenn man in einem Child Theme versucht innerhalb der functions.php remove_action für eine Funktion des Parent Themes auszuführen.

Da das Child Theme zuerst abgearbeitet wird, läuft remove_action ins Leere. Die Lösung: remove_action aufrufen, nachdem WordPress sowohl Child als auch Parent Theme abgearbeitet hat. Ein möglicher Hook dafür ist after_setup_theme.

Das sieht dann so aus:

//remove action after both child and parent theme have been loaded
add_action( 'after_setup_theme', 'remove_woo_actions', 10 );

function remove_woo_actions() {
   remove_action( 'woocommerce_before_shop_loop_item_title', 'avia_woocommerce_thumbnail', 10);
   remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10);
}

Die remove_action Funktionen sind jetzt innerhalb der Funktion remove_woo_actions, welche erst mit dem Ausführen des Hooks after_setup_themes von WordPress, ausgeführt wird.