Los interceptores de complementos y la anulación con preferencia no funcionan en métodos estáticos.
Debe anular el método getOptionArray en Magento \ Catalog \ Model \ Product \ Visibility para devolver una visibilidad personalizada
/**
* Retrieve option array
*
* @return array
*/
public static function getOptionArray()
{
return [
self::VISIBILITY_NOT_VISIBLE => __('Not Visible Individually'),
self::VISIBILITY_IN_CATALOG => __('Catalog'),
self::VISIBILITY_IN_SEARCH => __('Search'),
self::VISIBILITY_BOTH => __('Catalog, Search')
];
}
¿De alguna otra manera esto se puede lograr?

Respuestas:
Anular solo
getOptionArray()no es suficiente porque si ve en Magento \ Catálogo \ Modelo \ Producto \ Visibilidad en la línea 107, 120 y 134,getOptionArray()se llama conself.Self siempre llamará al método original en lugar de al nuevo, por lo tanto, simplemente necesita copiar y peguegetAllOption(),getAllOptions()ygetOptionText()en su Clase de modelo anulada (igual donde ha anuladogetOptionArray())fuente