根据产品类别中的术语将术语添加到自定义分类

时间:2021-10-25 作者:Tatex

在这件事上花了四个多小时,但仍然碰壁,希望StackExchange知道得更好/

基本上,我有一些Woo产品,每当添加一个新产品时,它的名称应该保存为我注册的自定义分类法的一个术语(“模型”),但只有当它在某个产品类别中时,比如说类别的名称应该是“Keyboards”。

现在,每次我添加一个新产品,例如,一个名为“最佳键盘”的键盘,并在产品类别metabox中检查“键盘”术语,“最佳键盘”也会自动添加为“型号”分类中的一个术语(我需要显示与其他各种产品的兼容性)。This 在我试图实现的目标中非常有用,我对代码进行了一些删减:

add_action( \'save_post\', \'add_custom_terms\' );

function add_custom_terms( $post_id ) {
  if ( \'product\' === get_post_type( $post_id ) ) {

        $term_title = get_the_title( $post_id );
        $term_slug = get_post( $post_id )->post_name;

        $existing_terms = get_terms( \'compatibility\', array(
            \'hide_empty\' => false
            )
        );

        foreach( $existing_terms as $term ) {
            if ( $term->description === $post_id ) {
                wp_update_term( $term->term_id, \'compatibility\', array(
                    \'name\' => $term_title,
                    \'slug\' => $term_slug
                    )
                );
                return;
            }
        }

        wp_insert_term( $term_title, \'compatibility\', array(
            \'slug\' => $term_slug,
            \'description\' => $post_id
            )
        );
    }
}

这就是我被困的地方。它的工作原理与预期完全一样,但它总是将产品名称添加到模型分类中,而不管是否检查了术语“键盘”。

所以,我的基本问题是-如何设置条件,使其仅在产品是键盘时发生?

从我收集的信息来看,似乎我应该使用两个钩子,“save\\u post”和“publish\\u post”,因为“save\\u post”不知道在发布帖子/产品之前是否选中了“Keyboards”复选框,因此无法将其作为向自定义分类法添加术语的条件,但我真的不知道如何组合这两个钩子。如果有人能帮忙,我欠你一个人情!

1 个回复
SO网友:Andrea Somovigo

正如您所说,当触发“save\\u post”时,更改不是mae,因此还没有与术语关联。

但是在$_POST[\'product_cat\'] 变量您拥有所选类别的数组(ID),因此您可以检查产品是否属于“键盘”类别(基于其ID),并决定是否执行进一步的操作

相关推荐