Ich muss in meinem Fall alles mit "und" filtern. Kannst du mir da einen Hook basteln damit er und anstatt oder verwendet?
Er sucht die Begriffe ja in Titel und Beschreibung?
Damit man Produkte mittels UND in einer Liste filtern kann, kann man diesen Filter nutzen. Es ergänzt die Liste um ein weiteres Feld "AND filter".
Ist dieses Feld befüllt, wird die Liste nach dem Laden von der API nochmals gefiltert.
function atkp_list_modify_productlist_callback( $products, $list_id ) {
$andfilter = ATKPTools::get_post_setting( $list_id, ATKP_LIST_POSTTYPE . '_andfilter' );
if($andfilter == '')
return $products;
$andkeywords = explode(',', $andfilter);
$products_filtered = array();
foreach($products as $product_arr) {
if($product_arr['type'] != 'product') {
$products_filtered[] = $product_arr;
continue;
}
$all_found = array();
foreach($andkeywords as $andkeyword) {
$andkeyword = trim($andkeyword);
if(ATKPTools::str_contains($product_arr['value']->title, $andkeyword, false) ) {
$all_found[$andkeyword] = $andkeyword;
}
if(ATKPTools::str_contains($product_arr['value']->description, $andkeyword, false)) {
$all_found[$andkeyword] = $andkeyword;
}
if(ATKPTools::str_contains($product_arr['value']->features, $andkeyword, false)) {
$all_found[$andkeyword] = $andkeyword;
}
}
if(count($all_found) >= count($andkeywords))
$products_filtered[] = $product_arr;
}
return $products_filtered;
}
add_filter( 'atkp_list_modify_productlist', 'atkp_list_modify_productlist_callback', 10,2);
function atkp_list_after_fields_callback($list_id) {
$list_id = get_the_ID();
?>
<tr>
<th scope="row">
<label for="">
<?php _e( 'AND filter', ATKP_PLUGIN_PREFIX ) ?>:
</label>
</th>
<td>
<input type="text" style="width:100%" id="<?php echo ATKP_LIST_POSTTYPE . '_andfilter' ?>"
name="<?php echo ATKP_LIST_POSTTYPE . '_andfilter' ?>"
value="<?php echo ATKPTools::get_post_setting($list_id, ATKP_LIST_POSTTYPE . '_andfilter', true ); ?>">
</td>
</tr>
<?php
}
add_action('atkp_list_after_fields', 'atkp_list_after_fields_callback', 10, 1);
function atkp_list_save_fields_callback($list_id) {
$minpercentage = ATKPTools::get_post_parameter( ATKP_LIST_POSTTYPE . '_andfilter', 'string' );
ATKPTools::set_post_setting( $list_id, ATKP_LIST_POSTTYPE . '_andfilter', $minpercentage );
}
add_action('atkp_list_save_fields', 'atkp_list_save_fields_callback', 10, 1);
Fügen Sie dieses Snippet einfach in Ihre functions.php oder in ein Snippets-Plugin ein.
Sie sehen gerade einen Platzhalterinhalt von Facebook. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenSie müssen den Inhalt von hCaptcha laden, um das Formular abzuschicken. Bitte beachten Sie, dass dabei Daten mit Drittanbietern ausgetauscht werden.
Mehr InformationenSie müssen den Inhalt von reCAPTCHA laden, um das Formular abzuschicken. Bitte beachten Sie, dass dabei Daten mit Drittanbietern ausgetauscht werden.
Mehr InformationenSie müssen den Inhalt von reCAPTCHA laden, um das Formular abzuschicken. Bitte beachten Sie, dass dabei Daten mit Drittanbietern ausgetauscht werden.
Mehr InformationenSie müssen den Inhalt von reCAPTCHA laden, um das Formular abzuschicken. Bitte beachten Sie, dass dabei Daten mit Drittanbietern ausgetauscht werden.
Mehr InformationenSie müssen den Inhalt von Turnstile laden, um das Formular abzuschicken. Bitte beachten Sie, dass dabei Daten mit Drittanbietern ausgetauscht werden.
Mehr InformationenSie sehen gerade einen Platzhalterinhalt von Instagram. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenSie sehen gerade einen Platzhalterinhalt von X. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr Informationen