Wordpress Ajax 自定义分类法

Posted

技术标签:

【中文标题】Wordpress Ajax 自定义分类法【英文标题】:Wordpress Ajax custom taxonomy 【发布时间】:2014-07-20 01:55:21 【问题描述】:

我目前有一个带有自定义帖子类型和自定义分类的 wordpress。 (jobs_category)。

我的构建列出了这个分类中的类别,如下所示:

<?php
  $taxonomy = 'jobs_category';
  $tax_terms = get_terms($taxonomy);
?>
<ul>
  <?php
  foreach ($tax_terms as $tax_term) ?>
    <li id="cat-<?php echo $tax_term->term_id; ?>">
     <a href="#<?php //echo esc_attr(get_term_link($tax_term, $taxonomy)); ?>" class="<?php echo $tax_term->slug; ?> ajax" onclick="cat_ajax_get('<?php echo $tax_term->term_id; ?>');" title="<?php echo $tax_term->name;?>"><?php echo $tax_term->name; ?></a>
    </li>
  <?  ?>
</ul>

然后我在我的函数文件中使用了以下内容:

    add_action( 'wp_ajax_nopriv_load-filter', 'prefix_load_cat_posts' );
add_action( 'wp_ajax_load-filter', 'prefix_load_cat_posts' );
function prefix_load_cat_posts () 
    $cat_id = $_POST[ 'cat' ];
         $args = array (
        'cat' => $cat_id,
        'posts_per_page' => 10,
        'order' => 'DESC'

    );

    $posts = get_posts( $args );

    ob_start ();

    foreach ( $posts as $p )  ?>

    <div id="post-<?php echo $post->ID; ?>">
        <h1 class="posttitle"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>

        <div id="post-content">
        <?php the_excerpt(); ?>

        </div>
   </div> 


   <?php  wp_reset_postdata();

   $response = ob_get_contents();
   ob_end_clean();

   echo $response;
   die(1);

用下面的 JS 做 AJAX:

    <script>
function cat_ajax_get(catID) 
    jQuery("a.ajax").removeClass("current");
    jQuery("a.ajax").addClass("current"); //adds class current to the category menu item being displayed so you can style it with css
    jQuery("#loading-animation-2").show();
    var ajaxurl = '/wp-admin/admin-ajax.php';
    jQuery.ajax(
        type: 'POST',
        url: ajaxurl,
        data: "action": "load-filter", cat: catID ,
        success: function(response) 
            jQuery("#category-post-content").html(response);
            jQuery("#loading-animation").hide();
            return false;
        
    );

</script>

我的问题是如何让它使用自定义分类法类别?我不是 100% 确定,因为我以前从未这样做过。

任何帮助都会很棒。

谢谢

【问题讨论】:

【参考方案1】:

您必须使用tax_query 而不是cat。虽然 category 用于原生 Wordpress 分类法,但它不适用于自定义分类法。

将您的数组 $args 替换为:

$args = array (
    'tax_query' => array(
         array(
            'taxonomy' => 'jobs_category',
            'field' => 'term_id',
            'terms' => array( $cat_id )
         )
    ),
    'post_type' => 'jobs', // <== this was missing
    'posts_per_page' => 10,
    'order' => 'DESC'
);

【讨论】:

感谢您的帮助!!我想我明白你在说什么,基本上我不需要寻找 cat 我需要寻找 tax_query。我当前的代码现在看起来像这样:pastebin.com/jAquKr73 但是它似乎没有工作:( @andyjones 你能解释一下不工作吗?它还输出什么? 抱歉应该解释一下,它什么也没加载。没有加载到: 我做了 console.log(data);检查可能正在加载的内容,什么都没有:/ @andyjones 啊,我明白了。您说您有自定义帖子类型,但您没有为您的$args 数组定义任何post_type。正如我所说,Wordpress 认为您的意思是 post_type =&gt; post 这是本地的,而这不是您的情况。顺便说一句,你的post_type 是什么?然后我将编辑我的答案。 啊,对了,我已经把我所有的自定义帖子类型都放在了这个 pastebin 中:pastebin.com/L9KHfqvA register_post_type('jobs', $args);非常感谢:)

以上是关于Wordpress Ajax 自定义分类法的主要内容,如果未能解决你的问题,请参考以下文章

使用 Ajax 的带有自定义分类法的 Wordpress 多个自定义帖子类型过滤器 - 所有新创建的帖子都不会在响应中显示

无法在wordpress中将选择框显示为ajax响应

如何在wordpress 3.0中使用自定义分类法

wordpress自定义分类怎么调用?

不能删除分类、标签! WordPress

wordpress如何自定义分类栏目的title