1

我可能混淆了术语,所以我希望你能理解。

我有一个“包裹”的自定义帖子类型我已经设置了创建名为“添加包裹类型”的类别的能力

当我添加一个类别时,我希望仅在“添加包类型”中插入一个带有新类别标题的新页面。

我似乎无法使用以下代码获得类别标题,在 $taxonomy 中我得到“添加包类型”,这很好。但我希望页面的名称与我刚刚输入的标题相同。

谢谢

function custom_create_packages( $term_id, $tt_id, $taxonomy ){

    if($taxonomy == 'package type'){
        $new_page_title = $cat_title;
        $new_page_content = 'This is the page content';
        $new_page_template = ''; //ex. template-custom.php. Leave blank if you don't want a custom page template.
        //don't change the code bellow, unless you know what you're doing
        $page_check = get_page_by_title($new_page_title);
        $new_page = array(
            'post_type' => 'page',
            'post_title' => $new_page_title,
            'post_content' => $new_page_content,
            'post_status' => 'publish',
            'post_author' => 1,
        );
        if(!isset($page_check->ID)){
            $new_page_id = wp_insert_post($new_page);
            if(!empty($new_page_template)){
                update_post_meta($new_page_id, '_wp_page_template', $new_page_template);
            }
        }
    }
}

add_action( 'create_term', 'custom_create_packages', 10, 3 );
4

1 回答 1

1

如果我对您的理解正确,您将不得不根据$term_id参数检索术语的详细信息。就像是:

function custom_create_packages( $term_id, $tt_id, $taxonomy ){

    if($taxonomy == 'package_type'){
        $term = get_term( $term_id, $taxonomy );
        $new_page_title = $term->name;

我不知道您的代码中的分类 slug(“包类型”)是否只是一个示例,但它不应包含空格(请参阅Codex)。

可能值得将您的操作从更改create_termcreate_{taxonomy}(例如create_package_type)以消除检查分类的需要。请注意,create_{taxonomy}只有 2 个参数 ($term_id$tt_id),因为分类是已知的。

我不确定,但在created_{taxonomy}钩子中调用你的函数可能更安全(注意'd'),它是在调用clean_term_cache函数之后调用的(虽然它是一个新条目,但可能不会有什么不同)。

于 2013-10-04T07:45:59.213 回答