Ich verwende diesen Code, um Produkte auf der Shop-Seite auszublenden, deren Produktpreis höher als 1 ist.
Allerdings ohne das gewünschte Ergebnis. Wo läuft es schief?
Mein Code:
add_action( 'woocommerce_product_query', 'react2wp_hide_products_higher_than_1' );
function react2wp_hide_products_higher_than_1( $q ){
if ( is_shop() ) {
$meta_query = $q->get( 'meta_query' );
$meta_query[] = array(
'key' => '_price',
'value' => 1,
'compare' => '>'
);
}
$q->set( 'meta_query', $meta_query );
}
- Du bist nah dran, füge hinzu
type
'type' => 'numeric' // specify it for numeric values
Typ (Zeichenfolge) – Benutzerdefinierter Feldtyp. Mögliche Werte sind 'NUMERIC'
, 'BINARY'
, 'CHAR'
, 'DATE'
, 'DATETIME'
, 'DECIMAL'
, 'SIGNED'
, 'TIME'
, 'UNSIGNED'
. Standardwert ist 'CHAR'
.
- vergleichen (String) – Bediener zum Testen. Mögliche Werte sind
'='
, '!='
, '>'
, '>='
, '<'
, '<='
, 'LIKE'
, 'NOT LIKE'
, 'IN'
, 'NOT IN'
, 'BETWEEN'
, 'NOT BETWEEN'
, 'EXISTS'
(nur in WP >= 3.5), und 'NOT EXISTS'
(ebenfalls nur in WP >= 3.5). Werte 'REGEXP'
, 'NOT REGEXP'
und 'RLIKE'
wurden in WordPress 3.7 hinzugefügt. Standardwert ist '='
.
Ergebnis:
Dadurch werden alle Produkte, deren Preis höher als 1 ist, auf der Produktarchivseite (Shop) ausgeblendet.
function react2wp_hide_products_higher_than_1( $q, $query ) {
// Returns true when on the product archive page (shop).
if ( is_shop() ) {
// Get any existing meta query
$meta_query = $q->get( 'meta_query' );
// Define an additional meta query
$meta_query[] = array(
'key' => '_price',
'value' => 1,
'type' => 'numeric', // specify it for numeric values
'compare' => '<'
);
// Set the new merged meta query
$q->set( 'meta_query', $meta_query );
}
}
add_action( 'woocommerce_product_query', 'react2wp_hide_products_higher_than_1', 10, 2 );