web-dev-qa-db-ja.com

4.4のカスタム分類法にカスタムフィールドを追加する方法

都市用のカスタム分類法があり、iOS Workflowアプリケーションを使用してアクセスできるようにこれをカスタムフィールドとして使用できるようにしたいです。 4.4の変更を考慮して、ワークフローアプリケーションで使用できる場所のカスタムフィールドが必要な場合はどうすればよいですか。

"分類学へのカスタムメタフィールドの追加"というタイトルのページが見つかりました: https://pippinsplugins.com/adding-custom-meta-fields-to-taxonomies/ which notes:

WordPress 4.4では、WordPressにはネイティブの「用語メタデータ」テーブルが存在するため、顧客メタデータを用語に追加するための必要な方法でも有効な方法でもなくなりました。

詳細についてはこちらを参照してください。 https://make.wordpress.org/core/2015/09/04/taxonomy-term-metadata-proposal/

私のカスタム分類は:

    add_action( 'init', 'loc_taxonomy', 0 );
    function loc_taxonomy() {

    $labels = array(
        'name'                       => _x( 'Locations', 'Taxonomy General Name', 'text_domain' ),
        'singular_name'              => _x( 'Location', 'Taxonomy Singular Name', 'text_domain' ),
        'menu_name'                  => __( 'Locations', 'text_domain' ),
        'all_items'                  => __( 'All Locations', 'text_domain' ),
        'parent_item'                => __( 'Parent Location', 'text_domain' ),
        'parent_item_colon'          => __( 'Parent Location:', 'text_domain' ),
        'new_item_name'              => __( 'New Location Name', 'text_domain' ),
        'add_new_item'               => __( 'Add New Location', 'text_domain' ),
        'edit_item'                  => __( 'Edit Location', 'text_domain' ),
        'update_item'                => __( 'Update Location', 'text_domain' ),
        'separate_items_with_commas' => __( 'Separate locations with commas', 'text_domain' ),
        'search_items'               => __( 'Search locations', 'text_domain' ),
        'add_or_remove_items'        => __( 'Add or remove locations', 'text_domain' ),
        'choose_from_most_used'      => __( 'Choose from the most used locations', 'text_domain' ),
        'not_found'                  => __( 'Not Found', 'text_domain' ),
    );
    $args = array(
        'labels'                     => $labels,
        'hierarchical'               => true,
        'public'                     => true,
        'show_ui'                    => true,
        'show_admin_column'          => true,
        'show_in_nav_menus'          => true,
        'show_tagcloud'              => true,
    );
    register_taxonomy( 'loc', array( 'post' ), $args );

}
2
abalone

プラグインまたはワードプレスの定義済みフックを使ってメタボックスを追加するには、2つの方法でこれを実装できます。

https://wordpress.org/plugins/taxonomy-metadata/ /

  **OR**

テーマのfunctions.phpに次のコードを追加してください。

function mj_taxonomy_add_custom_meta_field() {
        ?>
        <div class="form-field">
            <label for="term_meta[class_term_meta]"><?php _e( 'Add Class', 'MJ' ); ?></label>
            <input type="text" name="term_meta[class_term_meta]" id="term_meta[class_term_meta]" value="">
            <p class="description"><?php _e( 'Enter a value for this field','MJ' ); ?></p>
        </div>
    <?php
    }
add_action( 'product_cat_add_form_fields', 'mj_taxonomy_add_custom_meta_field', 10, 2 );





 function mj_taxonomy_edit_custom_meta_field($term) {

        $t_id = $term->term_id;
        $term_meta = get_option( "taxonomy_$t_id" ); 
       ?>
        <tr class="form-field">
        <th scope="row" valign="top"><label for="term_meta[class_term_meta]"><?php _e( 'Add Class', 'MJ' ); ?></label></th>
            <td>
                <input type="text" name="term_meta[class_term_meta]" id="term_meta[class_term_meta]" value="<?php echo esc_attr( $term_meta['class_term_meta'] ) ? esc_attr( $term_meta['class_term_meta'] ) : ''; ?>">
                <p class="description"><?php _e( 'Enter a value for this field','MJ' ); ?></p>
            </td>
        </tr>
    <?php
    }

add_action( 'product_cat_edit_form_fields','mj_taxonomy_edit_custom_meta_field', 10, 2 );



function mj_save_taxonomy_custom_meta_field( $term_id ) {
        if ( isset( $_POST['term_meta'] ) ) {

            $t_id = $term_id;
            $term_meta = get_option( "taxonomy_$t_id" );
            $cat_keys = array_keys( $_POST['term_meta'] );
            foreach ( $cat_keys as $key ) {
                if ( isset ( $_POST['term_meta'][$key] ) ) {
                    $term_meta[$key] = $_POST['term_meta'][$key];
                }
            }
            // Save the option array.
            update_option( "taxonomy_$t_id", $term_meta );
        }

    }  
add_action( 'edited_product_cat', 'mj_save_taxonomy_custom_meta_field', 10, 2 );  
add_action( 'create_product_cat', 'mj_save_taxonomy_custom_meta_field', 10, 2 );
1
shishir mishra