2016-03-22 80 views
0

abone profilinde devre dışı bırakıldı Kullanıcı profilini kontrol etmek için kullanıcı seçeneklerini görüntülemek üzere wp_terms_checklist kullanıyorum. Bu, admin olarak oturum açtığında iyi çalışır, ancak abone oturum açtığımda, onay kutusu girişleri disabled="disabled" eklenmiştir.wp_terms_checklist onay kutuları

İçeriğin abonenin profil sayfasında görünmesi nedeniyle bunun bir izin sorunu olduğunu düşünmüyorum. Muhtemelen bilmiyorum, bu fonksiyon https://codex.wordpress.org/Function_Reference/disabled dan geliyor gibi görünüyor.

Haklısın
<?php 

add_action('show_user_profile', 'iw_notify_show_user_options'); 
add_action('edit_user_profile', 'iw_notify_show_user_options'); 

function iw_notify_show_user_options($user) { ?> 

<h3 id="notifications">Notification Options</h3> 

<style> 
    .iw_notify_heirarchical_list ul { padding-left:20px; } 
</style> 

<div class='iw_notify_heirarchical_list'> 
    <ul class=iw_notify_heirarchical_list> 
     <?php 
      $selected_cats = get_the_author_meta('tax_input', $user->ID); 
      $selected_cats = $selected_cats['notifications']; 

      if (!function_exists('wp_terms_checklist')) { 
        require_once ABSPATH . '/wp-admin/includes/template.php'; 
       } 
      $post_id = -1; 
      $args = array( 
       'descendants_and_self' => 0, 
       'selected_cats' => array('165','164'), 
       'popular_cats' => false, 
       'walker' => '', 
       'taxonomy' => 'notifications', 
       'checked_ontop' => false 
      ); 
      wp_terms_checklist($post_id, $args); 
     ?> 
    </ul> 
</div> 


<?php } 

add_action('personal_options_update', 'my_save_extra_profile_fields'); 
add_action('edit_user_profile_update', 'my_save_extra_profile_fields'); 

function my_save_extra_profile_fields($user_id) { 

if (!current_user_can('read', $user_id)) 
    return false; 

    update_usermeta($user_id, 'tax_input', $_POST['tax_input']); 
} 

cevap

0

, wp_terms_checklist onay kutusu işlevi disabled tarafından devre dışı:

İşte kod (Bu Yaptığım özel eklenti parçasıdır). Eğer disabled Anahtar

$tax = get_taxonomy($taxonomy); 
$args['disabled'] = ! current_user_can($tax->cap->assign_terms); 

kuruldu template.php https://core.trac.wordpress.org/browser/tags/4.4.2/src/wp-admin/includes/template.php#L114 çekirdek sınıflandırmadan atamak geçerli kullanıcı roles and capabilities bağlıdır görürseniz

(sizin durumunuzda Sınıflandırmayı bildirimleri olduğunu).

Yani, fonksiyonu register_taxonomybildirimleri kontrol edebilir ve parametreyi capabilities ayarlamak emin olmak gerekir. Eğer abone, terimler kontrol listesi kullanmak için tam iznine sahip gerekiyorsa, böyle ayarlamalısınız:

'capabilities' => array(
    'manage_terms' => 'read', 
    'edit_terms' => 'read', 
    'delete_terms' => 'read', 
    'assign_terms' => 'read' 
) 

Sadece ihtiyaçlarınız olarak çimdik. https://codex.wordpress.org/Roles_and_Capabilities rolü ve yeteneği için WP Kodx'a bakın.