Пользовательские возможности таксономий WordPress не работают с пользовательским типом записи - PullRequest
0 голосов
/ 25 августа 2018

У меня проблема с двумя пользовательскими таксономиями WordPress.

Я создал собственный тип записи под названием «kurs», и для этого пользовательского типа я также создал 2 пользовательских иерархических таксономии. Это работало нормально, пока я не хотел добавить пользовательские возможности для 2 таксономий.

Я добавил аргумент «способности» для 2 возможностей

первая таксономия:

    'capabilities' => array(
        'manage_terms' => 'manage_location',
        'edit_terms' => 'edit_location',
        'delete_terms' => 'delete_location',
        'assign_terms' => 'assign_location',
    )

вторая таксономия:

    'capabilities' => array(
        'manage_terms' => 'manage_typ',
        'edit_terms' => 'edit_typ',
        'delete_terms' => 'delete_typ',
        'assign_terms' => 'assign_typ',
    )

Затем я добавил все эти новые пользовательские возможности в роль администратора с помощью этой функции:

    function kurse_role_caps() {
    // gets the simple_role role object
    $role = get_role('administrator');

    // add a new capability
    $role->add_cap( 'manage_location', 'edit_location', 'delete_location', 'assign_location', 'manage_typ', 'edit_typ', 'delete_typ', 'assign_typ', true);
    }

    add simple_role capabilities, priority must be after the initial role definition
    add_action('init', 'kurse_role_caps', 11);

Но вторая пользовательская таксономия не отображается в меню администратора, хотя для аргумента 'show_in_menu' установлено значение true: Снимок экрана моего меню администратора

Если я удаляю пользовательские возможности из второй таксономии, это отображается в админке: введите описание изображения здесь

После того как я искал эту проблему в интернете, ни у кого не было подобной проблемы. Вот мой смысл полного кода, который я использую для пользовательского типа записи и 2 пользовательских таксономий: https://gist.github.com/jeremygrlj/a9319591e3d1940e9ef465f024220e84

1 Ответ

0 голосов
/ 25 августа 2018

Обратите внимание, что add_cap принимает только одну возможность в виде строки, поэтому вам необходимо выполнить цикл всех возможностей. Измените свою функцию следующим образом.

function kurse_role_caps() {
    // gets the simple_role role object
    $role = get_role('administrator');

    // add a new capability
    $capabilities = array( 'manage_location', 'edit_location', 'delete_location', 'assign_location', 'manage_typ', 'edit_typ', 'delete_typ', 'assign_typ' );
    foreach( $capabilities as $cap ) {
        $role->add_cap( $cap );
    }
}

// add simple_role capabilities, priority must be after the initial role definition
add_action('init', 'kurse_role_caps', 11);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...