使用FOREACH保存post meta并实现操作crud

时间:2017-02-01 00:50:27

标签: php wordpress wordpress-theming

我手动在数据库中注册了两张照片,在“meta_key”栏中我添加了“my-image-for-post”以及帖子ID。

$url =get_post_meta($post->ID,'my-image-for-post', false);部分下面的完整代码中,我可以用foreach打印溃疡。

我无法保存多张图片,我有两个疑问:

1 - 如何在图像管理器中选择的另一个网址替换db中的当前网址,如果点击保存帖子时没有网址也使用foreach注册新网址?

2 - 如何在每个图像中添加删除和编辑按钮?因为在保存帖子和永久注册ulrs之前我想要这样,用户可以更新,删除或添加新图像

    add_action('plugins_loaded', function(){ 
        if($GLOBALS['pagenow']=='post.php'){
            add_action('admin_print_scripts', 'my_admin_scripts');
            add_action('admin_print_styles',  'my_admin_styles');
        }
    });

    function my_admin_scripts() { wp_enqueue_script('jquery');    wp_enqueue_script('media-upload');   wp_enqueue_script('thickbox'); }   //  //wp_register_script('my-upload', WP_PLUGIN_URL.'/my-script.js', array('jquery','media-upload','thickbox'));  wp_enqueue_script('my-upload');
    function my_admin_styles()  { wp_enqueue_style('thickbox'); }


    add_action('add_meta_boxes', function(){  add_meta_box('my-metaboxx1', 'Galery','func99999', get_post_types(),'normal'); }, 9);
    function func99999($post){ 
        $url =get_post_meta($post->ID,'my-image-for-post', false); ?>

        <input id="my_upl_button" type="button" value="Upload Image" /><br/>
            <?php foreach ($url as $field) { 
             ?>

             <img src="<?php echo $field;?>" style="width:200px;" />

             <?php
             };
            ?>

            <div id="display">

            </div>

            <script>
        jQuery(document).ready( function( $ ) {

            var custom_uploader;
              $('#my_upl_button').click(function(e) {
                e.preventDefault();
                //If the uploader object has already been created, reopen the dialog
                if (custom_uploader) {
                  custom_uploader.open();
                  return;
                }
                //Extend the wp.media object
                custom_uploader = wp.media.frames.file_frame = wp.media({
                  title: 'Choose Image',
                  button: {
                    text: 'Choose Image'
                  },
                  multiple: true
                });
                custom_uploader.on('select', function() {
                  var selection = custom_uploader.state().get('selection');
                  selection.map( function( attachment ) {
                    attachment = attachment.toJSON();
                    $("#display").after("<input id='upload_image' type='text' size='36' name='upload_image' value= " +attachment.url+ " /></br><img src=" +attachment.url+" class='my_image_URL' src=''  width='80px'></br>");

                  });
                });
                custom_uploader.open();
              });

        });
        </script>
<?php
}

add_action( 'save_post', function ($post_id) {
   // foreach here I tried but I could not 
});

目前的结果:

enter image description here

enter image description here

更新

我尝试使用下面的两个代码,但我无法将图像保存在数据库中

1

add_action( 'save_post', function ($post_id) {

    if (isset($_POST['my_image_URL'])){
            $urls = $_POST['my_image_URL'];

            Foreach ($urls as $url){
        $key1_values = get_post_custom_values( 'my-image-for-post', $post_id );
        Foreach($key1_values as $value){
            update_post_meta($post_id, 'my-image-for-post', $url, $value);
        }
        }
   }

});

2

 add_action( 'save_post', function ($post_id) {

            if (isset($_POST['my_image_URL'])){
            $urls = $_POST['my_image_URL'];

             Foreach ($urls as $url){
                update_post_meta($post_id, 'my-image-for-post',$url);
            }
        }

    });

在jquery代码中,您正在使用name ='my_image_URL'正确创建输入

$("#show").after("<input class='upload_image' type='text' size='36' name='my_image_URL' value= " +attachment.url+ " /></br><img src=" +attachment.url+" class='my_image' src='' width='80px'></br>");

0 个答案:

没有答案