2016-08-25 4 views
0

Я использую WordPress с плагином для содержания темы в церкви, этот плагин регистрирует различные пользовательские типы сообщений и дополнительные таксономии, которые могут использовать специально написанные темы.Пользовательские возможности в пользовательском типе сообщений не работают

Чтобы помочь администратору сайта, я хотел бы изменить возможности одного из таксономий и типов сообщений и разрешить определенным пользователям ограниченные права на них. После копания здесь и других сайтов я сделал простой плагин, который изменил возможности и использовал плагин Members, чтобы изменить разрешения для пользователя, но поскольку обновление до 4.6 больше не работает, и они не отображаются в списке пользовательских возможностей в плагине членов или редакторе роли пользователя ....

Я понятия не имею, с чего начать искать решение, я пошел туда и обратно, пробую разные вещи и пытаясь найти приличную документацию о том, как это сделать все работает, но у меня голова в путанице, любая помощь здесь будет оценена по достоинству.

Текущий код, работал, теперь нет:

<?php 
/* 
Plugin Name: Church Theme Content - Custom Sermon Caps 
Description: Allows fine grained control over Sermon Posts 
Version:  1 
Author:  Tom Wild 
Text Domain: ctcCustom-toolset 
*/ 
// Prevent direct access to this file. 
if (!defined('ABSPATH')){ 
    header('HTTP/1.0 403 Forbidden'); 
    echo 'This file should not be accessed directly!'; 
    exit; // Exit if accessed directly 
} 

function ctc__modify_caps() { 
    // get the arguments of the already-registered taxonomy 
    $speaker_category_args = get_taxonomy('ctc_sermon_speaker'); // returns an object 

// make changes to the args 
$speaker_category_args->capabilities = array(
     'manage_terms' => 'add_speakers', 
     'edit_terms' => 'edit_speakers', 
     'delete_terms' => 'delete_speakes', 
     'assign_terms' => 'assign_speakers' 
     ); 

$sermon_post_type = get_post_type_object('ctc_sermon'); 
$sermon_post_type->capability_type = 'sermon'; 
$sermon_post_type->map_meta_cap = true; 
$sermon_post_type->capabilities = array(
     // meta caps (don't assign these to roles) 
     'edit_post'    => 'edit_sermon', 
     'read_post'    => 'read_sermon', 
     'delete_post'   => 'delete_sermon', 

     // primitive/meta caps 
     'create_posts'   => 'create_sermons', 

     // primitive caps used outside of map_meta_cap() 
     'edit_posts'    => 'edit_sermons', 
     'edit_others_posts'  => 'edit_others_sermons', 
     'publish_posts'   => 'publish_sermons', 
     'read_private_posts'  => 'read', 

     // primitive caps used inside of map_meta_cap() 
     'read'     => 'read', 
     'delete_posts'   => 'delete_sermons', 
     'delete_private_posts' => 'delete_private_sermons', 
     'delete_published_posts' => 'delete_published_sermons', 
     'delete_others_posts' => 'delete_others_sermons', 
     'edit_private_posts'  => 'edit_private_sermons', 
     'edit_published_posts' => 'edit_published_sermons' 
     ); 

// re-register the taxonomy 

register_taxonomy('ctc_sermon_speaker', 'ctc_sermon', (array) $speaker_category_args); 

    register_post_type('ctc_sermon',(array) $sermon_post_type); 
} 
add_action('init', 'ctc__modify_caps', 11); 

?> 

ответ

0

Не знаю, почему он перестал работать, но я нашел решение.

После рытья через код для Церкви Тема Содержание Я нашел, что это позволило фильтры на его оформление видов почтовых и таксономиям поэтому я переписал мой код:

<?php 
    //Other Stuff 
    function ctc__do_sermon_tag_filter($args) { 
     $args['capabilities'] = array(
       'manage_terms' => 'add_sermon_tags', 
       'edit_terms' => 'edit_sermon_tags', 
       'delete_terms' => 'delete_sermon_tags', 
       'assign_terms' => 'assign_sermon_tags' 
       ); 
    } 
    function ctc__do_sermon_post_type_filter($args){ 
     $args['capability_type'] = 'sermon'; 
     $args['capabilities'] = array(
       // meta caps (don't assign these to roles) 
       'edit_post'    => 'edit_sermon', 
       'read_post'    => 'read_sermon', 
       'delete_post'   => 'delete_sermon', 

       // primitive/meta caps 
       'create_posts'   => 'create_sermons', 

       // primitive caps used outside of map_meta_cap() 
       'edit_posts'    => 'edit_sermons', 
       'edit_others_posts'  => 'edit_others_sermons', 
       'publish_posts'   => 'publish_sermons', 
       'read_private_posts'  => 'read_private_sermons', 

       // primitive caps used inside of map_meta_cap() 
       'read'     => 'read', 
       'delete_posts'   => 'delete_sermons', 
       'delete_private_posts' => 'delete_private_sermons', 
       'delete_published_posts' => 'delete_published_sermons', 
       'delete_others_posts' => 'delete_others_sermons', 
       'edit_private_posts'  => 'edit_private_sermons', 
       'edit_published_posts' => 'edit_published_sermons' 
       ); 
     return $args; 
    } 
    function ctc__add_filters(){ 
     add_filter('ctc_post_type_sermon_args','ctc__do_sermon_post_type_filter',11); 
     add_filter('ctc_taxonomy_sermon_topic_args','ctc__do_sermon_topic_filter',11); 
     add_filter('ctc_taxonomy_sermon_book_args','ctc__do_sermon_book_filter',11); 
     add_filter('ctc_taxonomy_sermon_series_args','ctc__do_sermon_series_filter',11); 
     add_filter('ctc_taxonomy_sermon_speaker_args','ctc__do_sermon_speaker_filter',11); 
     add_filter('ctc_taxonomy_sermon_tag_args','ctc__do_sermon_tag_filter',11);  
    } 
    add_action('init', 'ctc__add_filters',9); 
    ?> 
Смежные вопросы