This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| programmieren:wordpress:nach_cutom_fields_suchen [2022/08/17 16:19] – jgehrke | programmieren:wordpress:nach_cutom_fields_suchen [2022/12/17 12:28] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 14: | Line 14: | ||
| <code php> | <code php> | ||
| <?php | <?php | ||
| + | |||
| /* | /* | ||
| HOOK FILTER IN SEARCH | HOOK FILTER IN SEARCH | ||
| */ | */ | ||
| - | |||
| - | // diese Zeilen müssen nur 1x früh ausgeführt werden und dann geht die ACF Feld Suche bei jeder Wordpress-Suche | ||
| $post_types = [ ' | $post_types = [ ' | ||
| new SearchWithCustomFields( $post_types ); | new SearchWithCustomFields( $post_types ); | ||
| Line 39: | Line 38: | ||
| private $wp_filter_priority | private $wp_filter_priority | ||
| + | //private $acf_post_types | ||
| private $limit_search_to_post_types = []; // wp_query » post_types | private $limit_search_to_post_types = []; // wp_query » post_types | ||
| private $results_per_page | private $results_per_page | ||
| Line 51: | Line 51: | ||
| add_filter( ' | add_filter( ' | ||
| add_filter( ' | add_filter( ' | ||
| - | //add_filter( ' | + | add_filter( ' |
| } | } | ||
| Line 129: | Line 129: | ||
| } | } | ||
| return $distinct_mode_string; | return $distinct_mode_string; | ||
| + | } | ||
| + | |||
| + | |||
| + | |||
| + | /** | ||
| + | * | ||
| + | * | ||
| + | * @link https:// | ||
| + | */ | ||
| + | public function filter_results( $post_objects_array ) { | ||
| + | |||
| + | return $post_objects_array ; | ||
| } | } | ||
| Line 144: | Line 156: | ||
| { | { | ||
| $is_search_by_wpquery | $is_search_by_wpquery | ||
| + | $is_admin | ||
| + | $is_acf_call | ||
| $is_flatsome_ajax_search = false; | $is_flatsome_ajax_search = false; | ||
| Line 153: | Line 167: | ||
| } | } | ||
| - | $is_search = ( $is_search_by_wpquery | $is_flatsome_ajax_search ) ? true : false; | + | $is_search = ( ( $is_search_by_wpquery |
| return $is_search; | return $is_search; | ||
| + | } | ||
| + | |||
| + | /** | ||
| + | * | ||
| + | * | ||
| + | * Prüft ob die Suche durch ein ACF Query ausgelöst wurde | ||
| + | * | ||
| + | * ACF & die Beschränkung nach Post_Types vertägt sich nicht, weil | ||
| + | * ACF mit eigenen Posttypes kommt. Darum muss geprüft werden, dass | ||
| + | * keine Beschränkung in der Suche vorgenommen wird, wenn der call | ||
| + | * über ACF kommt. | ||
| + | * | ||
| + | * Bisher noch keine bessere Lösung gefunden, als den Callstack | ||
| + | * abzufragen. | ||
| + | * | ||
| + | * @return boolean [description] | ||
| + | */ | ||
| + | private function is_acf_call() | ||
| + | { | ||
| + | $backtrace | ||
| + | $is_acf_call = false; | ||
| + | foreach ($backtrace as $key => $stack) { | ||
| + | $is_acf_file | ||
| + | $is_acf_function = (strpos( $stack[" | ||
| + | |||
| + | if( $is_acf_file | $is_acf_function ){ | ||
| + | $is_acf_call = true; | ||
| + | break; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | return $is_acf_call; | ||
| } | } | ||
| } | } | ||
| + | |||
| </ | </ | ||