This question is actually an extension of this [question][1].

For default post type posts are populated based on category selection from the drop down, but when I change the settings for the Custom post types than posts do not populate for the CPT categories election from the drop down.

I think that the ajax part of the scripting is working fine. Check the visual [here][2]. But the conditional loop has some issue.

Here is the code →

    / Script for getting posts
    function ajax_filter_get_posts( $taxonomy ) {
    
      // Verify nonce
      if( !isset( $_POST['afp_nonce'] ) || !wp_verify_nonce( $_POST['afp_nonce'], 'afp_nonce' ) )
        die('Permission denied');
    
      $taxonomy = $_POST['taxonomy'];
    
      if($taxonomy == 'all'){
    	  // WP Query
    	  $args = array(
    		'post_type' => 'video',
    		'posts_per_page' => -1,
    	  );
      }else{
    	  // WP Query
    	  $args = array(
    		'category_name' => $taxonomy,
    		'post_type' => 'video',
    		'posts_per_page' => -1,
    	  );
      }
    
      // If taxonomy is not set, remove key from array and get all posts
      if( !$taxonomy ) {
        unset( $args['category'] );
      }
    
      $query = new WP_Query( $args );
    
      if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ?>
    	<li class="box">
    		<div class="images"><?php the_post_thumbnail( 'large') ?></div>
    		<div class="text3">
    			<h4><?php $categories = get_the_category();
    			if ( ! empty( $categories ) ) {
    			  echo '<a class="themelor" href="' . esc_url( get_category_link( $categories[0]->term_id ) ) . '">' . esc_html( $categories[0]->name ) . '</a>';
    			} ?></h4>
    			<h3><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>
    		</div>
    	</li>
      <?php endwhile; ?>
      <?php else: ?>
        <h2>No posts found</h2>
      <?php endif;
      //die();
    	exit();
    }
    
    add_action('wp_ajax_filter_posts', 'ajax_filter_get_posts');
    add_action('wp_ajax_nopriv_filter_posts', 'ajax_filter_get_posts');

____________________________________________________________________


I think this part is executing →

          if($taxonomy == 'all'){
    	  // WP Query
    	  $args = array(
    		'post_type' => 'video',
    		'posts_per_page' => -1,
    	  );
      }else{

But this part is not executing →

    	  $args = array(
		'category_name' => $taxonomy,
		'post_type' => 'video',
		'posts_per_page' => -1,
Can some one help me where am I going wrong? what need to be fixed in the loop?


  [1]: https://wordpress.stackexchange.com/questions/305016/how-to-populate-the-list-of-custom-post-type-categories
  [2]: https://s3.amazonaws.com/sitepoint007/cpt_video.gif


#Extra:
Category for CPT is defined like this:

        add_action( 'init', 'create_video_cpt_taxonomy' );
    
    function create_video_cpt_taxonomy() {
    	register_taxonomy(
    		'vcategory',
    		'video',
    		array(
    			'label' => __( 'Video Category' ),
    			'rewrite' => array( 'slug' => 'vcategory' ),
    			'hierarchical' => true,
    		)
    	);
    }
    
    add_action( 'init', 'video_CPT_registration' );


For custom post types do we have to write this part in some other way:

          $taxonomy = $_POST['taxonomy'];
Or perhaps there is something else that is conflicting.

> Please let me Know if I have to give some extra information.