Community Forums › Forums › Archived Forums › General Discussion › create custom search filter
- This topic has 1 reply, 2 voices, and was last updated 7 years, 1 month ago by Victor Font.
-
AuthorPosts
-
March 21, 2017 at 8:21 pm #203614sbuermanMember
Hello, I try to create a personalized filter, the idea is that the user can choose the way of sorting out the list of the authors of sites. There would be 3 choices, by name, by function and by category.
If the user chooses by function or by category a dropdown list appears and function of what he chooses the results must be filtered. I tried this but I have to have an error in my WP_user°query. Can help me please?
/** * Template Name: Genesis Contributors Template */ add_action( 'genesis_loop', 'search_sort_filter', 5 ); add_action( 'genesis_entry_content', 'contributors_author_list' ); if($_GET['categorie']=="Partenaires"){ add_action( 'genesis_entry_content', 'partenaires_list' ); }else{ add_action( 'genesis_entry_content', 'contributors_author_list' ); } function search_sort_filter() { ?><form action="" method="get"> <select name="orderby" id="orderby"> <option selected value="first_name">Prénom</option> <option value="fonction">Fonction</option> <option value="categorie">Catégorie</option> </select> <select id="categorie" name="categorie"> <option value="choisir">Choisir catégorie</option> <option value="Partenaires">Partenaires</option> <option value="Collaborateurs">Collaborateurs</option> </select> <select id="fonction" name="fonction"> <option value="choisir">Choisir Fonction</option> <option value="PDG">PDG</option> <option value="Trésorier">Trésorier</option> <option value="Cadre">Cadre</option> <option value="Secrétaire">Secrétaire</option> <option value="Employé">Employé</option> <option value="Ouvrier">Ouvrier</option> <option value="1er Expert">1er Expert</option> </select> <input type="search" name="as" id="searchtext"> <input type="submit" value="Rechercher"/> </form><?php } function contributors_author_list() { $args = array( 'orderby'=> 'last_name', 'order'=> 'ASC' ); $user_query = new WP_User_Query($args); // User Loop if ( ! empty( $user_query->results ) ) { foreach ( $user_query->results as $user ) { ?> <div class="contributor"> <div class="contributor-info"> <div class="contributor-avatar"><?php echo get_avatar($user, 230); ?></div> <h2 class="contributor-name"><?php echo $user->display_name;?></h2> <?php if ($user->fonction) : ?> <p class="contributor-fonction"><?php echo $user->fonction; ?>></p> <?php endif; ?> <?php if ($user->facebook_link) : ?> <a class="contributor-facebook-link" href="<?php echo esc_url($user->facebook_link); ?>"></a> <?php endif; ?> <?php if ($user->twitter_link) : ?> <a class="contributor-twitter-link" href="<?php echo esc_url($user->twitter_link); ?>"></a> <?php endif; ?> <?php if ($user->adresse) : ?> <p class="contributor-adresse"> <?php echo $user->adresse; ?>"></p> <?php endif; ?> <?php if ($user->user_email) : ?> <a class="contributor-email-link" href="mailto:<?php echo esc_url($user->user_email); ?>"></a> <?php endif; ?> <div class="contributor-summary"> <p class="contributor-bio"> <?php echo $user->description; ?></p> </div> </div> </div><?php } } else { echo 'Aucun auteurs'; } } function partenaires_list(){ $user_query = new WP_User_Query( array( 'meta_key' => 'categorie', 'meta_value' => 'Partenaires' ) ); if ( ! empty( $user_query->results ) ) { foreach ( $user_query->results as $user ) { ?> <div class="contributor"> <div class="contributor-info"> <div class="contributor-avatar"><?php echo get_avatar($user, 230); ?></div> <h2 class="contributor-name"><?php echo $user->display_name;?></h2> <?php if ($user->fonction) : ?> <p class="contributor-fonction"><?php echo $user->fonction; ?>></p> <?php endif; ?> <?php if ($user->facebook_link) : ?> <a class="contributor-facebook-link" href="<?php echo esc_url($user->facebook_link); ?>"></a> <?php endif; ?> <?php if ($user->twitter_link) : ?> <a class="contributor-twitter-link" href="<?php echo esc_url($user->twitter_link); ?>"></a> <?php endif; ?> <?php if ($user->adresse) : ?> <p class="contributor-adresse"> <?php echo $user->adresse; ?>"></p> <?php endif; ?> <?php if ($user->user_email) : ?> <a class="contributor-email-link" href="mailto:<?php echo esc_url($user->user_email); ?>"></a> <?php endif; ?> <div class="contributor-summary"> <p class="contributor-bio"> <?php echo $user->description; ?></p> </div> </div> </div><?php } } else { echo 'Aucun auteurs'; } } genesis();
March 25, 2017 at 6:20 am #203805Victor FontModeratorI've never seen anyone replace the genesis_loop with a search form. genesis_loop executes after wp_query has retrieved posts. That makes no sense to me, especially while you are trying to change the genesis_entry_content hook that executes within the loop that you've already removed.
If you want to create a search filter, you need to capture the criteria and pass it to wp_query in the pre-get_posts hook or use wpdb to return your content. Here is an example of a search filter I created for Genesis/WooCommerce. I do have a custom loop, but the search filter passes the criteria to the query with Ajax. https://houseplanworks.com/
Regards,
Victor
https://victorfont.com/
Call us toll free: 844-VIC-FONT (842-3668)
Have you requested your free website audit yet? -
AuthorPosts
- The forum ‘General Discussion’ is closed to new topics and replies.