Я добавил поле для функции «Быстрое редактирование» в WordPress. Это работает, и я могу обновить базу данных. Тем не менее, у меня много проблем с выяснением, как установить начальное значение меню выбора. По умолчанию всегда используется значение «Открыть», несмотря на использование jQuery, чтобы попытаться обновить значение селектора до нужного значения. Вот соответствующий код, который я собрал из других примеров:
function quick_edit_javascript() {
global $current_screen;
if ( 'grievance' != $current_screen->post_type ) {
return;
}
?>
<script type="text/javascript">
function value_step( fieldValue ) {
inlineEditPost.revert();
// This is the broken part
jQuery('select[name="step"]').val(fieldValue).change();
// This gets triggered, so I know code is getting executed:
alert('hi');
}
</script>
<?php
}
add_action( 'admin_footer', 'quick_edit_javascript' );
/**
* Pass step value to value_step javascript function
*
* @param array $actions
* @param array $post
*
* @return array
*/
function expand_quick_edit_link( $actions, $post ) {
global $current_screen;
if ( 'grievance' != $current_screen->post_type ) {
return $actions;
}
$meta = get_post_meta( $post->ID, 'my_first_plugin_fields', true);
$data = $meta['step'];
$actions['inline hide-if-no-js'] = '<a href="#" class="editinline" title="';
$actions['inline hide-if-no-js'] .= esc_attr( 'Edit this item inline' ) . '"';
$actions['inline hide-if-no-js'] .= " onclick=\"value_step('{$data}')\" >";
$actions['inline hide-if-no-js'] .= 'Quick Edit';
$actions['inline hide-if-no-js'] .= '</a>';
return $actions;
}
add_filter( 'post_row_actions', 'expand_quick_edit_link', 10, 2 );
Я пробовал много разных методов jQuery, но ничего не делал, обновлял значение меню выбора. Как ни странно, это работает:
jQuery('select[name="step"]').hide();
Так что я знаю, что селектор работает. Я попытался установить меню выбора с жестко заданными значениями:
jQuery('select[name="step"]').val(2).change();
и
jQuery('select[name="step"]').val('2').change();
Но это не сработало. Я не уверен, что еще попробовать. HTML-код поля select
выглядит следующим образом:
<div class="inline-edit-col">
<select name="step"><option value="1">Open</option><option value="2">Closed</option></select>
</div>