カスタムメタボックスの選択オプションを保存しようとして壁に頭をぶつけていました。ドロップダウンに複数のオプションがあるので、値を保存するために実際に何をターゲットにしているのか分かりにくいです。私はselect name="XXX"
をターゲットにしようとしますが、運はまだありません。どんな助けでも大歓迎です。ここでWordPressカスタムメタボックスで選択オプションを保存する方法
は、選択オプションドロップダウンを表示する私のコードです:
<?php
$accessory_product_args = [
'posts_per_page' => -1,
'tax_query' => [
'relation' => 'AND',
[
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => 'accessories'
],
],
'post_type' => 'product',
'orderby' => 'title',
];
$accessory_product = new WP_Query($accessory_product_args); ?>
<select name="_accessories_product_one" id="_accessories_product_one" class="widefat">
<?php while ($accessory_product->have_posts()) : $accessory_product->the_post();
$title_one = get_the_title();
$postid_one = get_the_ID(); ?>
<option value="<?=$postid_one?>" <?php selected('_accessories_product_one[select_field_0]', $postid_one); ?>>
<?=$title_one?>
</option>
<?php endwhile; ?>
</select>
<?php
//this below is used for testing to see if i have saved the value or not:
$dropdown_option = get_option('_accessories_product_one'); // Array
$dropdown_value = $dropdown_option ['select_field_0']; // Option value
var_dump($dropdown_option);
var_dump($dropdown_value);
?>
このコードは節約です:
<?php
if (isset($_POST['_accessories_product_one']) {
update_post_meta($post_id, '_accessories_product_one', $_POST['_accessories_product_one']);
} ?>
任意の助けいただければ幸いです。
EDIT: 私はこれをwoocommerceプロダクト画面で使用しています - ページ編集、ポスト編集、プラグイン編集画面ではありません。ここで
は、私が使用しています完全なコードのより詳細なペーストです:
function custom_product_basic_load() {
add_action('add_meta_boxes_product' , 'custom_product_basic_add_meta_boxes_product');
add_meta_box('custom_product_basic_metabox' , __('Product Layout') , 'custom_product_basic_metabox' , 'product' , 'normal' , 'high');
add_action('save_post' , 'custom_product_basic_save_post' , 10 , 3);
}
add_action('load-post.php' , 'custom_product_basic_load');
add_action('load-post-new.php' , 'custom_product_basic_load');
function custom_product_basic_metabox($post) {?>
<input type="hidden" name="product_type" value="simple" />
<?php
$accessory_product_args = [
'posts_per_page' => -1,
'tax_query' => [
'relation' => 'AND',
[
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => 'accessories'
],
],
'post_type' => 'product',
'orderby' => 'title',
];
$accessory_product = new WP_Query($accessory_product_args); ?>
<select name="_accessories_product_one" id="_accessories_product_one" class="widefat">
<?php while ($accessory_product->have_posts()) : $accessory_product->the_post();
$title_one = get_the_title();
$postid_one = get_the_ID(); ?>
<option value="<?=$postid_one?>" <?php selected('_accessories_product_one[select_field_0]', $postid_one); ?>>
<?=$title_one?>
</option>
<?php endwhile; ?>
</select>
<?php
$dropdown_option = get_option('_accessories_product_one'); // Array
$dropdown_value = $dropdown_option ['select_field_0']; // Option value
var_dump($dropdown_option);
var_dump($dropdown_value);
?>
<?php }
function custom_product_basic_save_post($post_id) {
if (isset($_POST['_accessories_product_one'])) {
update_post_meta($post_id, '_accessories_product_one', $_POST['_accessories_product_one']);
}
}
あなたのコードをフックで掲示する。 – vel
@vel私は – HollerTrain