반응형
선택한 드롭다운 목록에서 메타박스 데이터 저장
메타박스에서 워드프레스 데이터베이스에 데이터를 저장하려고 합니다.
몇 가지 옵션을 선택할 수 있는 드롭다운 목록이 있는데 메타박스 덕분에 선택한 옵션을 데이터베이스에 저장하고 싶습니다.
하지만 PHP의 저장 기능에 어려움이 있습니다.
<?php
function add_admin_menu_class_meta_box() {
$pages = array('post', 'portfolio');
foreach( $pages as $page ) {
add_meta_box('custom_element_grid_class','Element grid size', 'custom_element_grid_class_meta_box', $page, 'side', 'high');
}
}
add_action( 'admin_menu', 'add_admin_menu_class_meta_box' );
function custom_element_grid_class_meta_box(){
?>
<label>Choose the size of the element : </label>
<select name="custom_element_grid_class" id="custom_element_grid_class">
<option value="normal" <?php selected( $meta_element_class, 'normal' ); ?>>normal</option>
<option value="square" <?php selected( $meta_element_class, 'square' ); ?>>square</option>
<option value="wide" <?php selected( $meta_element_class, 'wide' ); ?>>wide</option>
<option value="tall" <?php selected( $meta_element_class, 'tall' ); ?>>tall</option>
</select>
<?php
}
add_action('save_post', 'save_custom_element_grid_class');
function save_custom_element_grid_class(){
global $post;
if(!isset($_POST["custom_element_grid_class"])):
return $post;
endif;
update_post_meta($post->ID, 'custom_element_grid_class', $meta_element_class);
}
?>
선택 값을 가져오고 저장하려면 어떻게 해야 합니까?update_post_meta()
?
테스트한 코드는 다음과 같습니다.
<?php
/**
* Plugin Name: Metabox test
*
*/
add_action( 'add_meta_boxes', 'so_custom_meta_box' );
function so_custom_meta_box($post){
add_meta_box('so_meta_box', 'Custom Box', 'custom_element_grid_class_meta_box', $post->post_type, 'normal' , 'high');
}
add_action('save_post', 'so_save_metabox');
function so_save_metabox(){
global $post;
if(isset($_POST["custom_element_grid_class"])){
//UPDATE:
$meta_element_class = $_POST['custom_element_grid_class'];
//END OF UPDATE
update_post_meta($post->ID, 'custom_element_grid_class_meta_box', $meta_element_class);
//print_r($_POST);
}
}
function custom_element_grid_class_meta_box($post){
$meta_element_class = get_post_meta($post->ID, 'custom_element_grid_class_meta_box', true); //true ensures you get just one value instead of an array
?>
<label>Choose the size of the element : </label>
<select name="custom_element_grid_class" id="custom_element_grid_class">
<option value="normal" <?php selected( $meta_element_class, 'normal' ); ?>>normal</option>
<option value="square" <?php selected( $meta_element_class, 'square' ); ?>>square</option>
<option value="wide" <?php selected( $meta_element_class, 'wide' ); ?>>wide</option>
<option value="tall" <?php selected( $meta_element_class, 'tall' ); ?>>tall</option>
</select>
<?php
}
언급URL : https://stackoverflow.com/questions/17755973/save-meta-box-data-from-selected-dropdown-list
반응형
'source' 카테고리의 다른 글
플러그인 내부에서 is_page()를 사용하려면 어떻게 해야 합니까? (0) | 2023.09.23 |
---|---|
group_concat을 사용하여 값을 인용하는 방법 (0) | 2023.09.23 |
카트 에이잭스와 미니카트에 우커머스 추가 (0) | 2023.09.23 |
파이썬: 'from X import Y'로 가져온 구성 요소 Y를 다시 로드하시겠습니까? (0) | 2023.09.23 |
WooCommerce 내 JetPack의 댓글 구독 상자 위치 변경 (0) | 2023.09.23 |