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;

コード内のタクソノミー スラッグ (「パッケージ タイプ」) が単なる例であるかどうかはわかりませんが、スペースを含めるべきではありません ( Codex を参照してください)。

分類法をチェックする必要をなくすために、アクションをcreate_termからcreate_{taxonomy}(例: ) に変更する価値があるかもしれません。分類法が既知であるため、 には 2 つのパラメーター (および)しかないことにcreate_package_type注意してください。create_{taxonomy}$term_id$tt_id

確かではありませんがcreated_{taxonomy}、関数が呼び出された後に呼び出されるフック(「d」に注意)で関数を呼び出す方が安全かもしれませんclean_term_cache(ただし、新しいエントリであるため、おそらく違いはありません)。

于 2013-10-04T07:45:59.213 に答える