0

カテゴリ リストをさまざまなフィールドで並べ替えられるようにしたいと考えています。タグ(または任意のフィールド)がこれを行う良い方法だと思います。しかし、カテゴリにタグを追加する方法がわかりません。

アイデア?

4

1 に答える 1

1

この WordPress StackExchange Q&A から:

新しい分類の作成時にカスタム分類フィールドを追加する

これらはタグではなく、wp_optionsテーブルに保存されるカスタム フィールドです。そして、それらはカテゴリ ID を使用して保存および取得されます (例: get_option( "taxonomy_$t_id" ).
その他のソリューションについては、完全な Q&A を確認してください。改訂されたコード:

add_action( 'category_edit_form_fields', 'extra_edit_tax_fields_wpse_29322', 15, 2 );
add_action( 'category_add_form_fields', 'extra_add_tax_fields_wpse_29322', 10, 2 );
add_action( 'edited_category', 'save_extra_taxonomy_fields_wpse_29322', 10, 2 );
add_action( 'create_category', 'save_extra_taxonomy_fields_wpse_29322', 10, 2 );   

// Edit existing taxonomy
function extra_edit_tax_fields_wpse_29322( $tag ) 
{
    // Check for existing taxonomy meta for term ID.
    $t_id = $tag->term_id;
    $term_meta = get_option( "taxonomy_$t_id" ); 
    ?>
    <tr class="form-field">
    <th scope="row" valign="top">
        <label for="cat_Image_url"><?php _e( 'Category Navigation Image URL' ); ?></label>
    </th>
        <td>
            <input type="text" name="term_meta[img]" id="term_meta[img]" value="<?php echo esc_attr( $term_meta['img'] ) ? esc_attr( $term_meta['img'] ) : ''; ?>">
            <p class="description"><?php _e( 'Enter the full URL to the navigation image used for this category.' ); ?></p>
        </td>
    </tr>
    <?php
}

// Add taxonomy page
function extra_add_tax_fields_wpse_29322( $tag ) 
{
    ?>
    <div class="form-field">
        <label for="cat_Image_url"><?php _e( 'Category Navigation Image URL' ); ?></label>
        <input type="text" name="term_meta[img]" id="term_meta[img]" value="">
        <p class="description"><?php _e( 'Enter the full URL to the navigation image used for this category.' ); ?></p>
    </div>
    <?php
}

// Save extra taxonomy fields callback function.
function save_extra_taxonomy_fields_wpse_29322( $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 );
    }
}   
于 2013-01-22T06:13:56.713 に答える