• Resolved Sany

    (@sannny)


    Hello,

    I’ve added a custom field term_status to my custom taxonomy productcategory.
    Now I want to add a meta box to my post type product. The box should look like a standard taxonomy box with the category checkboxes – but only the terms should be listed with term_status = 1.
    My goal is to archive terms, but I dont want to see them in the meta box.

    I use
    wp_terms_checklist($post->ID, array('taxonomy' => 'productcategory', 'popular_cats' => $popular_ids));
    but of course I get all terms of the taxonomy.
    I want only those with term_status = 1. I want to do something like:

    get_terms(
      'taxonomy' => 'productcategory',
      'meta_query' => array(
        'meta_key' => 'term_status',
        'meta_value' => 1  
      )
    );

    but this isn’t possible with wp_terms_checklist

    The whole code for the callback function of my custom meta box is:

    function productcategory_meta_box($post, $box) {
    
    	$defaults = array('taxonomy' => 'productcategory');
    
    	if(!isset($box['args']) || !is_array($box['args'])) {
    		$args = array();
    	} else {
    		$args = $box['args'];
    	}
    	
    	$r = wp_parse_args($args, $defaults);
    	$tax_name = esc_attr($r['taxonomy']);
    	$taxonomy = get_taxonomy($r['taxonomy']);
    	?>
    	<div id="taxonomy-<?php echo $tax_name; ?>" class="categorydiv">
    		<ul id="<?php echo $tax_name; ?>-tabs" class="category-tabs">
    			<li class="tabs"><a href="#<?php echo $tax_name; ?>-all"><?php echo $taxonomy->labels->all_items; ?></a></li>
    			<li class="hide-if-no-js"><a href="#<?php echo $tax_name; ?>-pop"><?php _e( 'Most Used' ); ?></a></li>
    		</ul>
    
    		<div id="<?php echo $tax_name; ?>-pop" class="tabs-panel" style="display: none;">
    			<ul id="<?php echo $tax_name; ?>checklist-pop" class="categorychecklist form-no-clear" >
    				<?php $popular_ids = wp_popular_terms_checklist( $tax_name ); ?>
    			</ul>
    		</div>
    
    		<div id="<?php echo $tax_name; ?>-all" class="tabs-panel">
    			<?php
    			$name = ($tax_name == 'productcategory') ? 'post_category' : 'tax_input[' . $tax_name . ']';
    			echo "<input type='hidden' name='{$name}[]' value='0' />"; // Allows for an empty term set to be sent. 0 is an invalid Term ID and will be ignored by empty() checks.
    			?>
    			<ul id="<?php echo $tax_name; ?>checklist" data-wp-lists="list:<?php echo $tax_name; ?>" class="categorychecklist form-no-clear">
    				<?php wp_terms_checklist( $post->ID, array( 'taxonomy' => $tax_name, 'popular_cats' => $popular_ids ) ); ?>
    			</ul>
    		</div>
    	<?php if ( current_user_can( $taxonomy->cap->edit_terms ) ) : ?>
    			<div id="<?php echo $tax_name; ?>-adder" class="wp-hidden-children">
    				<a id="<?php echo $tax_name; ?>-add-toggle" href="#<?php echo $tax_name; ?>-add" class="hide-if-no-js taxonomy-add-new">
    					<?php
    						/* translators: %s: add new taxonomy label */
    						printf( __( '+ %s' ), $taxonomy->labels->add_new_item );
    					?>
    				</a>
    				<p id="<?php echo $tax_name; ?>-add" class="category-add wp-hidden-child">
    					<label class="screen-reader-text" for="new<?php echo $tax_name; ?>"><?php echo $taxonomy->labels->add_new_item; ?></label>
    					<input type="text" name="new<?php echo $tax_name; ?>" id="new<?php echo $tax_name; ?>" class="form-required form-input-tip" value="<?php echo esc_attr( $taxonomy->labels->new_item_name ); ?>" aria-required="true"/>
    					<label class="screen-reader-text" for="new<?php echo $tax_name; ?>_parent">
    						<?php echo $taxonomy->labels->parent_item_colon; ?>
    					</label>
    					<?php
    					$parent_dropdown_args = array(
    						'taxonomy'         => $tax_name,
    						'hide_empty'       => 0,
    						'name'             => 'new' . $tax_name . '_parent',
    						'orderby'          => 'name',
    						'hierarchical'     => 1,
    						'show_option_none' => '&mdash; ' . $taxonomy->labels->parent_item . ' &mdash;',
    					);
    
    					/**
    					 * Filters the arguments for the taxonomy parent dropdown on the Post Edit page.
    					 *
    					 * @since 4.4.0
    					 *
    					 * @param array $parent_dropdown_args {
    					 *     Optional. Array of arguments to generate parent dropdown.
    					 *
    					 *     @type string   $taxonomy         Name of the taxonomy to retrieve.
    					 *     @type bool     $hide_if_empty    True to skip generating markup if no
    					 *                                      categories are found. Default 0.
    					 *     @type string   $name             Value for the 'name' attribute
    					 *                                      of the select element.
    					 *                                      Default "new{$tax_name}_parent".
    					 *     @type string   $orderby          Which column to use for ordering
    					 *                                      terms. Default 'name'.
    					 *     @type bool|int $hierarchical     Whether to traverse the taxonomy
    					 *                                      hierarchy. Default 1.
    					 *     @type string   $show_option_none Text to display for the "none" option.
    					 *                                      Default "&mdash; {$parent} &mdash;",
    					 *                                      where <code>$parent</code> is 'parent_item'
    					 *                                      taxonomy label.
    					 * }
    					 */
    					$parent_dropdown_args = apply_filters( 'post_edit_category_parent_dropdown_args', $parent_dropdown_args );
    
    					wp_dropdown_categories( $parent_dropdown_args );
    					?>
    					<input type="button" id="<?php echo $tax_name; ?>-add-submit" data-wp-lists="add:<?php echo $tax_name; ?>checklist:<?php echo $tax_name; ?>-add" class="button category-add-submit" value="<?php echo esc_attr( $taxonomy->labels->add_new_item ); ?>" />
    					<?php wp_nonce_field( 'add-' . $tax_name, '_ajax_nonce-add-' . $tax_name, false ); ?>
    					<span id="<?php echo $tax_name; ?>-ajax-response"></span>
    				</p>
    			</div>
    		<?php endif; ?>
    	</div>
    	<?php
    }

    Can someone help me please? I’m getting frustrated ??

    Best regardds
    saNNNy

    • This topic was modified 8 years ago by Sany.
Viewing 1 replies (of 1 total)
Viewing 1 replies (of 1 total)
  • The topic ‘wp_terms_checklist with meta_query’ is closed to new replies.