krot

wp добавить поле в админку

Feb 4th, 2016
114
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?
  2. function my_extra_fields_content( $post )  
  3. {    
  4.     // URL-ы загруженных изображений будем сохранять в мета-полях  
  5.     $post_title_z = get_post_meta($post->ID, 'post_title_z', 1);  
  6.     $preview = get_post_meta($post->ID, 'post_preview', 1);  
  7.  
  8.  
  9.     ?>  
  10.         <label for="post_title_z">  
  11.         <h4>Заголовок для записи</h4>  
  12.         <input id="post_title_z" type="text" size="45" name="post_title_z" value="<?php echo $post_title_z; ?>" />  
  13.         </label>  
  14.         <label for="post_preview">  
  15.         <h4>Изображение</h4>          
  16.         <input id="post_preview" type="text" size="45" name="post_preview" value="<?php echo $preview; ?>" />  
  17.         <input id="post_preview_button" type="button" class="button" value="Загрузить" />  
  18.         <br />  
  19.         <small>Вставьте URL изображения для записи или загрузите его</small>  
  20.         </label>  
  21.    
  22.         <!-- Создаем проверочное поле для проверки того, что данные пришли с нашей формы -->  
  23.         <input type="hidden" name="extra_field_nonce" value="<?php echo wp_create_nonce(__FILE__); ?>" />  
  24.     <?php  
  25. }  
  26.  
  27. // Добавляем мета-блок с нашей формой на странице редактирования записи  
  28. function my_add_extra_fields() {  
  29.     add_meta_box( 'extra_fields', ' ', 'my_extra_fields_content', 'post', 'normal', 'high'  );  
  30. }  
  31.  
  32.  
  33. if( is_admin() )  add_action('admin_init', 'my_add_extra_fields', 1);  
  34.  
  35.  
  36.  
  37.     function my_add_upload_scripts() {  
  38.         wp_enqueue_script('media-upload');  
  39.         wp_enqueue_script('thickbox');  
  40.         wp_register_script(  
  41.                     'my-upload-script'  
  42.                     /* Подключаем JS-код задающий поведение  
  43.                      * загрузчика и указывающий, куда вставлять  
  44.                      * ссылку после загрузки изображения
  45.                      * Его код будет приведен ниже.
  46.                      */  
  47.                     ,get_bloginfo('template_url').'/js/upload.js'  
  48.                     /* Указываем скрипты, от которых  
  49.                      * зависит наш JS-код
  50.                      */  
  51.                     ,array('jquery','media-upload','thickbox')  
  52.         );  
  53.         wp_enqueue_script('my-upload-script');  
  54.     }  
  55.      
  56.     // Запускаем функцию подключения загрузчика  
  57.     if( is_admin() )  
  58.     add_action('admin_print_scripts', 'my_add_upload_scripts');  
  59.    
  60.    
  61.    
  62.    
  63.    
  64.     function my_extra_fields_content_update( $post_id ){  
  65.  
  66.  // Если данные пришли не из нашей формы, ничего не делаем  
  67.     if ( !wp_verify_nonce($_POST['extra_field_nonce'], __FILE__) )  
  68.             return false;            
  69.     // Если это автосохранение, то ничего не делаем      
  70.     if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE  )  
  71.             return false;  
  72.     // Проверяем права пользователя      
  73.     if ( !current_user_can('edit_post', $post_id) )  
  74.             return false;  
  75.  
  76.     $extra_fields = array(  
  77.         'post_title_z' => $_POST['post_title_z'],  
  78.         'post_preview' => $_POST['post_preview']
  79.     );  
  80.  
  81.     $extra_fields = array_map('trim', $extra_fields);  
  82.  
  83.  
  84.     foreach( $extra_fields as $key=>$value ){  
  85.             // Очищаем, если пришли пустые значения полей  
  86.             if( empty($value) )   delete_post_meta($post_id, $key);  
  87.             // Обновляем, (или создаем) в случае не пустых значений  
  88.             if($value)   update_post_meta($post_id, $key, $value);  
  89.     }  
  90.  
  91.     return $post_id;  
  92. }  
  93.  
  94. // Запускаем обработчик формы во время сохранения записи  
  95. if( is_admin() )  
  96. add_action('save_post', 'my_extra_fields_content_update', 0);  
  97.  
  98. //свой размер изображения
  99. if ( function_exists( 'add_image_size' ) ) {
  100.     add_image_size( 'thumb-707х231', 707, 231, true );
  101. }
  102. add_filter( 'image_size_names_choose', 'new_custom_sizes' );
  103. function new_custom_sizes( $sizes ) {
  104.     return array_merge( $sizes, array(
  105.         'thumb-707х231' => 'Размер 707х231'
  106.     ) );
  107. }
  108.  
  109. <?
  110.     jQuery(document).ready(function() {  
  111.      
  112.  
  113.      
  114.         jQuery('#post_preview_button').click(function() {  
  115.          formfield = jQuery('#post_preview').attr('name');  
  116.          tb_show('', 'media-upload.php?type=image&TB_iframe=true&ETI_field=post_preview');  
  117.          window.send_to_editor = function(html) {  
  118.          imgurl = jQuery('img',html).attr('src');  
  119.          jQuery('input[name='+formfield+']').val(imgurl);  
  120.          tb_remove();  
  121.         }  
  122.          return false;  
  123.         });  
  124.      
  125.  
  126.      
  127.     });
RAW Paste Data