将父类别分配给已分配给子类别的所有帖子

时间:2014-02-06 作者:ktsixit

“我的网站”的所有帖子都分配到子类别,但也不分配到它们的父类别:

enter image description here

有没有什么方法可以让我把帖子大量地分配给他们的上级类别?

enter image description here

我的网站有超过3k个帖子,所以我需要找到一种快速的方法来做到这一点。我没有找到任何可以帮助我的插件。有什么建议吗?

1 个回复
SO网友:Salem Terrano

小心,只运行一次

$_query = new WP_Query( array(
    \'post_type\' => \'post\',
    \'posts_per_page\' => -1,
 ) );
function complete_parent_category( $term_id, $dep=array() ) {
    $category = get_term( $term_id, \'category\' );
    $dep[ $category->term_id ] = $category->slug;
    if( $category->parent ) {
      $dep = complete_parent_category( $category->parent, $dep );
    }
    return $dep;
}
echo \'<pre>\';
while( $_query->have_posts() ) {
  $_query->next_post();
  echo \'<br /><strong>\'.$_query->post->post_title .\'</strong> |>> \';
  $cat_post = array();
  $cats = get_the_category( $_query->post->ID );
  if( count( $cats ) ) {
    foreach ($cats as $cat) {
      $cat_post[ $cat->term_id ] = $cat->slug;
      if( $cat->parent == 0 ) continue; 
      $category_object = get_term( $cat, \'category\' );
      $cat_post = complete_parent_category( $cat->parent, $cat_post );
    }
  }
  if( count( $cats ) == count( $cat_post ) ) return;
  $data = array(
      \'ID\'           => $_query->post->ID,
      \'post_category\' => array_keys($cat_post),
  );
  wp_update_post( $data );
}

wp_reset_postdata();

exit();

结束

相关推荐

具有自定义分类的自定义帖子类型中的WP_DROPDOWN_CATEGORIES

我有一个自定义的帖子类型,它有自己的分类法,基本上“show Vinces”是帖子类型,Vincement regions是分类法。看到一个场馆无法在多个地区存在,我删除了默认的metta框,并使用wp_dropdown_categories(). 分类法项目正在输出并按我所希望的方式显示,但它们不会被提交,并且下拉列表在提交后不会保留所选内容。我已经尽我所能地查看原始metabox的各种属性,并尝试将这些属性应用到下拉列表中,但到目前为止,我没有任何乐趣。我看过一些various WPSE上的帖子和ha