Проверьте, работает ли настраиваемое поле выбора в настраиваемой таксономии WordPress - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть этот код, который добавляет поле выбора с именем 'comp_email_template_id' к моей пользовательской таксономии с именем 'xyz_comp_entry_category' ...

add_action( 'xyz_comp_entry_category_add_form_fields', 'xyz_comp_entry_category_form_custom_field_add', 10 );
add_action( 'xyz_comp_entry_category_edit_form_fields', 'xyz_comp_entry_category_form_custom_field_edit', 10, 2 );

/* Add */
function xyz_comp_entry_category_form_custom_field_add( $taxonomy ) {
?>
<div class="form-field">
<label for="comp_email_template_id"><?php _e( "Email template", "sb-comps" ); ?></label>
<select name="comp_email_template_id" required>
        <option value="">Please select</option>
        <?php
                $args = array(
                    'post_type'         => 'xyz_comp_template',
                    'orderby'           => 'post_title',
                    'order'             => 'ASC',
                    'posts_per_page'    => -1
                );
                $query = new WP_Query($args);
                while ($query->have_posts()) : $query->the_post(); ?>
                <option value="<?php echo get_the_ID(); ?>"><?php echo the_title(); ?></option>
                <?php endwhile;
                wp_reset_postdata();
            ?>
    </select>
</div>
<?php
}

/* Edit */
function xyz_comp_entry_category_form_custom_field_edit( $tag, $taxonomy ) {
    $comp_email_template_id_option = 'comp_email_template_id_' . $tag->term_id;
    $comp_email_template_id = get_option( $comp_email_template_id_option ); ?>

    <tr class="form-field">
    <th scope="row" valign="top"><label for="tr_details"><?php _e( "Email template", "sb-comps" ); ?></label></th>
        <td>
            <select name="comp_email_template_id" required>
                <option value="">Please select</option>
                <?php
                    $args = array(
                        'post_type'         => 'xyz_comp_template',
                        'orderby'           => 'post_title',
                        'order'             => 'ASC',
                        'posts_per_page'    => -1
                    );
                    $query = new WP_Query($args);
                    while ($query->have_posts()) : $query->the_post(); ?>
                    <option value="<?php echo get_the_ID(); ?>"><?php echo the_title(); ?></option>
                    <?php endwhile;
                    wp_reset_postdata();
                ?>
            </select>
        </td>
    </tr>
<?php
}

/* Save */
add_action( 'created_category', 'xyz_comp_entry_category_form_custom_field_save', 10, 2 );
add_action( 'edited_category', 'xyz_comp_entry_category_form_custom_field_save', 10, 2 );

function xyz_comp_entry_category_form_custom_field_save( $term_id, $tt_id ) {

    if ( isset( $_POST['comp_email_template_id'] ) ) {
        $comp_email_template_id = 'comp_email_template_id_' . $term_id;
        update_option( $comp_email_template_id, $_POST['comp_email_template_id'] );
    }
}

..., которое действительно показывает поле при добавленииили отредактируйте:

enter image description here

Но есть две вещи, с которыми мне нужна помощь.

1) Как узнать, сохраняет лиданные в базе данных (например, где я буду искать, используя PHPMyAdmin)

2) Как получить поле выбора для автоматического выбора правильной опции, которая была сохранена (при редактировании)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...