Generic selectors
Nur exakte Treffer
Suche im Titel
Suche im Inhalt
Post Type Selectors

Frage / Problem

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?

Antwort / Lösung

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.

Aktualisiert: 11. März 2023
Verwenden Sie affiliate-toolkit noch nicht?
Die Einrichtung dauert weniger als 5 Minuten und schon können Sie die ersten Produkte importieren!
Erfahren Sie mehr über die PaketeKostenlose Version herunterladen
Brauchen Sie noch Hilfe?
Ihre Frage einreichen
Bitte geben Sie uns die Details, unser Support-Team wird sich mit Ihnen in Verbindung setzen.
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram