メタボックス内にJQueryで増減可能なフォームを作成した場合の問題
-
add_meta_boxで作ったメタボックスにJqueryで数を増減できるフォームをつくりました。
(Googleカレンダーのアラートのフォームと似たようなものです)ですが、javascriptの変数(下記スクリプトのa + lenとal +len)がPHPの変数に代入することができずに困っています。
さらに、そのあとにカスタムフィールドの値(メタキー)を保存する方法も見当がついていません。
$meta1,$meta_b1,$meta2,$meta_b2,$meta3,$meta_b3のような固定のキーに保存すると、<<$meta2,$meta_b2(フォームの2段目)の値はあるのに$meta1,$meta_b1(フォームの1段目)が空白>>だった場合、1段目のフォーム分が空白となることでレイアウト上の不都合が生ずるので、それを解決した方法があると理想です。
(1段目が空白だった場合、2段目の値を1段目に繰り上げしたいです)どなたか、この2つの方法をご教授いただけないでしょうか。
よろしくお願いします。
以下は自分で記述したフォーム部分のphpとjavascriptです。add_action( 'admin_init', 'meta_create' ); function meta_create() { add_meta_box('example_meta', 'テスト', 'example_meta_html','post'); } function example_meta_html () { global $post; $custom = get_post_custom($post->ID); if(!empty($custom)) { $var_array = array('meta1','meta2','meta_b1','meta_b1'); foreach ($var_array as $var) { ${$var} = isset( $custom[$var][0] ) ? $custom[$var][0]: ''; } } wp_nonce_field( 'my_events_nonce', 'events_nonce' ); ?> <?php <script> var a = 'meta';//アーティスト名のメタ var au = 'meta_b';//アーティストURLのメタ jQuery(document).ready(function($){ $('.addspan #add').click(function(){ var len = $('.item').length;//フォームの数 var newex_artist = '<div class="item"><span><input name="' + a + len + '" class="artist" value="<?php if(isset($' + a + len + ')) echo $' + a + len + '; ?>" size="27"><input name="' + au + len + '" class="artisturl" value="<?php if(isset($' + au + len + ')) echo $' + au + len + '; ?>" size="31"></span><span class="del_b"></span></div>';//この行のphp部分が上手く動かない if(len < 5){ $('.addspan').before(newex_artist); $('.item .del_b').remove(); len++; for(var i=0; i<len; i++){ var del = '<span class="del_b"><a href="#" id="del"></a></span>'; $('.item:eq(' + i + ')').append(del); } }else{ alert('これ以上追加できません'); } }); $('.item #del').live('click', function(){ var id = $(this).parent().index(); $('.item:eq('+ id +')').remove(); var len = $('.item').length; if(len == 1) $('.item #del').remove(); for(var i=0; i<=len_a; i++){ $('.item:eq(' + i + ') .artist').attr('name', a + i); $('.item:eq(' + i + ') .artisturl').attr('name', au + i); } }); }); </script> <div class="item"> <span><input name="meta" class="meta" value="<?php if(isset($meta)) echo $meta; ?>" size="27"><input name="artisturl" class="artisturl" value="<?php if(isset($meta_b)) echo $meta_b; ?>" size="31"></span><span class="del_b"></span></div> <span class="addspan"><a id="add">追加する</a></span> </div> <?php } //カスタムフィールドの値(メタキー)を保存する add_action ('save_post', 'save_example'); function save_example($post_id){ global $post; if ( !isset( $_POST['events_nonce'] ) || !wp_verify_nonce( $_POST['events_nonce'], 'my_events_nonce' )) { return $post_id; } if ( !current_user_can( 'edit_post', $post->ID )) { return $post_id; } update_post_meta($post->ID, 'meta1', $_POST['show']); update_post_meta($post->ID, 'meta2', $_POST['show']); … update_post_meta($post->ID, 'meta_b1', $_POST['show']); update_post_meta($post->ID, 'meta_b2', $_POST['show']); …
- トピック「メタボックス内にJQueryで増減可能なフォームを作成した場合の問題」には新たに返信することはできません。