2015-03-08 3 views
1

Я создаю портфолио шаблонов для wordpress, у меня возникли некоторые трудности с добавлением Metabox в бэкэнде пользовательской страницы. У меня есть страница «Обо мне» с индикатором прогресса, чтобы показать свои навыки, и я бы добавил в bakend Metabox, чтобы изменить процентный уровень progressbar, теперь я мог видеть Metabox на бэкэнд всех страниц и через jquery i hide если адрес страницы не соответствует ожидаемому, есть ли способ сделать экран более общим и связать Metabox с настраиваемым шаблоном страницы?Связать Metabox с настраиваемым шаблоном страницы в wordpress

это код, который я имею в моем function.php, он хорошо работает, но я хотел бы сделать это менее специфичны

<?php 
add_action('add_meta_boxes', 'box_percentuale'); 

function box_percentuale() { 

      add_meta_box(
       'percentuale', 
       'Mdifica progress bar', 
       'box_percentuale_style', 
       'page' 
      ); 

} 


function box_percentuale_style($post) { 
    ?> 

     <div> 
      <h4>Percentuale skills</h4> 
      <label>HTML</label><input type="number" name="html" value="<?php echo get_post_meta($post->ID, 'html', true); ?>"> 
      <label>CSS</label><input type="number" name="css" value="<?php echo get_post_meta($post->ID, 'css', true); ?>"> 
      <label>JQUERY</label><input type="number" name="jquery" value="<?php echo get_post_meta($post->ID, 'jquery', true); ?>"> 
      <label>WORDPRESS</label><input type="number" name="wordpress" value="<?php echo get_post_meta($post->ID, 'wordpress', true); ?>"> 
      <label>ILLUSTRATOR</label><input type="number" name="illustrator" value="<?php echo get_post_meta($post->ID, 'illustrator', true); ?>"> 
      <label>PHOTOSHOP</label><input type="number" name="photoshop" value="<?php echo get_post_meta($post->ID, 'photoshop', true); ?>"> 
     </div> 

     <script> 

      jQuery(document).ready(function($) { 
       var url = window.location.href; 
       var urlPagina = 'http://localhost/wordpress/wp-admin/post.php?post=34&action=edit'; 
       $('#percentuale').css('display', 'none'); 
       if (url == urlPagina) { 
        $('#percentuale').show(); 
       }; 

      }); 

     </script> 

    <?php 
} 

add_action('save_post', 'slava_percentuale'); 

function slava_percentuale($post_id) 

{ 

    if(isset($_POST['yiw_progetti_link'])) { 

     update_post_meta($post_id, 'html', intval($_POST['html'])); 

     update_post_meta($post_id, 'css', intval($_POST['css'])); 

     update_post_meta($post_id, 'jquery', intval($_POST['jquery'])); 

     update_post_meta($post_id, 'wordpress', intval($_POST['wordpress'])); 

     update_post_meta($post_id, 'illustrator', intval($_POST['illustrator'])); 

     update_post_meta($post_id, 'photoshop', intval($_POST['photoshop'])); 



    } 

} 

?> 

ответ

0

Вы можете добиться того, что используя что-то вроде:

function box_percentuale() { 
    global $post; 

    // This will check if you are actually on the page's editing screen 
    if (! empty($post)) { 

     // This will get the page template of the page you are editing 
     $page_template = get_post_meta($post->ID, '_wp_page_template', true); 

     // Check if you are using the template you wish to add meta box to 
     // Simply change "about.php" to the name of your template 
     // Note: if the template is in a subdirectory, you have to add it as well 
     // Example: 'page-templates/about.php' 
     if ($page_template == 'about.php') { 
      add_meta_box(
       'percentuale', 
       'Mdifica progress bar', 
       'box_percentuale_style', 
       'page' 
      ); 
     } 
    } 
} 
add_action('add_meta_boxes', 'box_percentuale'); 

Быстрое примечание: если вы перейдете на страницу с шаблоном страницы по умолчанию и выберите «О программе» в раскрывающемся списке шаблонов, вам сначала нужно сохранить свою страницу, чтобы появился мета-ящик (т. Е. Он не появится в данный момент вы меняете выпадающий список). Я не думаю, что это будет проблемой в вашем случае, но я подумал, что это стоит упомянуть.

+0

Благодарим за предложение, я пробовал с этим кодом, но не работает, мое имя файла подкачки «page-aboutMe.php», возможно ли, что это проблема? –

+0

Является шаблоном в подкаталоге? И какая часть не работает - разве это не добавление мета-поля или добавление его ко всем страницам? – Kaloyan

+0

Шаблон не находится в подкаталоге, не добавляет метабокс где-нибудь –