Support

Account

Home Forums General Issues get categories with advanced cutsom field

Solving

get categories with advanced cutsom field

  • Hi all! hope this is the right place to put my question, i really hope you can help me to get a solution.

    i have created a custom field for the categories, a checkbox (true/false) field.

    i want to query only categories that have this checkbox checked.

               $args = array(
                    'taxonomy' => 'category',
                    'hide_empty' => 0,
                    'meta_key' => 'isprofession',
                    'meta_value' => true
                );
    
                $c = get_categories($args);
                foreach($c as $cat){
                    echo $cat->name;
                }

    the custom field name is “isprofession”.

    this query retrieved me all the categories no matter if the custom field checked or not.

    thanks so much!

    the categories form

  • Hi,

    Did you able to find a solution for this ?

    Thanks in advance.

  • meta queries do not currently work on taxonomies in WP. There are plans to add termmeta, but that’s going to be a couple of updates out. Also, I don’t know what the developers plans are for ACF once it is implemented in WP core.

    What you need to do is get all the categories and then loop through them and see which ones have the value you want.

    
    <?php 
      
      $args = array(
        'taxonomy' => 'category',
        'hide_empty' => 0
      );
      $c = get_categories($args);
      $c_keep = array();
      foreach($c as  $cat){
        if (get_field('isprofession', 'category_'.$cat->term_id)) {
          $c_keep = $cat;
        }
      }
      
      foreach($c_keep as $cat){
        echo $cat->name;
      }
      
    ?>
    
  • Hi John,

    Thank you very much for your reply. I have tried your code but it wont return anything. Do you have any idea about that ?

  • there is an error in my code

    
    <?php 
      
      $args = array(
        'taxonomy' => 'category',
        'hide_empty' => 0
      );
      $c = get_categories($args);
      $c_keep = array();
      foreach($c as  $cat){
        if (get_field('isprofession', 'category_'.$cat->term_id)) {
          $c_keep[] = $cat; // forgot [] here
        }
      }
      
      foreach($c_keep as $cat){
        echo $cat->name;
      }
      
    ?>
    
  • Hey its working fine man, Thanks alot for your help 🙂

  • Hi. I have tried to modify this code and use it in a very similar case but it doesn’t work. Any idea if this code is still valid? Thanks

Viewing 7 posts - 1 through 7 (of 7 total)

You must be logged in to reply to this topic.