• Custom Taxonomy Capabilities. Как настроить правильно?

    san_jorich
    @san_jorich Автор вопроса
    Творческий кодер
    Твою-ж папу...Тостер!
    Бывает и такое: Спустя месяц с гаком вернулся к вопросу в другом проекте. Решил. В ходе поиска решения наткнулся на свой же вопрос по этой же теме. Сам задал - сам ответил. Нормально, че)))
    Если кому пригодится - некогда объяснять, просто берите готовое рабочее решение. Решение выкладываю по приведенному примеру:
    function add_se_roles() {
    
      $es_admin = add_role('es_admin','Администратор Системы Мероприятий',array( 'read'=>true,'level_7'=>true));
      if ( null !== $es_admin ) {
        $es_administrator = get_role('es_admin'); // Для CPT
        $es_administrator->add_cap('edit_es_event_content'); 
        $es_administrator->add_cap('edit_es_event_contents');
        $es_administrator->add_cap('read_es_event_content');
        $es_administrator->add_cap('read_private_es_event_content');
        $es_administrator->add_cap('delete_es_event_content');
        $es_administrator->add_cap('delete_es_event_contents');
        $es_administrator->add_cap('edit_published_es_event_contents');
        $es_administrator->add_cap('delete_published_es_event_contents');
        $es_administrator->add_cap('edit_other_es_event_content');
    
        $es_administrator->add_cap('manage_es_event_type'); // <-Права таксономии вопроса
        $es_administrator->add_cap('edit_es_event_type');
        $es_administrator->add_cap('delete_es_event_type');
        $es_administrator->add_cap('assign_es_event_type');
    
        $es_administrator->add_cap('manage_es_event_operation');
        $es_administrator->add_cap('edit_es_event_operation');
        $es_administrator->add_cap('delete_es_event_operation');
        $es_administrator->add_cap('assign_es_event_operation');
    
        $es_administrator->add_cap('manage_es_event_location');
        $es_administrator->add_cap('edit_es_event_location');
        $es_administrator->add_cap('delete_es_event_location');
        $es_administrator->add_cap('assign_es_event_location');
    
        $es_administrator->add_cap('manage_es_event_team');
        $es_administrator->add_cap('edit_es_event_team');
        $es_administrator->add_cap('delete_es_event_team');
        $es_administrator->add_cap('assign_es_event_team');
        $es_administrator->add_cap('manage_event_service');
      }  
    
    }
    // Легче создать относительно пустую, со стандартными возможностями роль и по итогам создания напичкать ее всем, чем нужно. 
    // Все, что нужно прописывается в функциях создания таксономий и произвольного типа записи.
    Ответ написан
    Комментировать
  • Как обновить цену для вариативного товара Woocommerce?

    Woocomerce активно использует трансиенты. Это временный вордпрессовский кэш.
    Что бы Ваши изменения сразу вступали в силу, Вам надо удалять трансиент для этого товара
    // очищаем кэш
    	wc_delete_product_transients($product_id);


    Я тоже как то искал и нашел в исходниках, где-то очень глубоко.

    Но если честно, Ваш подход неверный, т.к. Woocommerce при изменении цены вариации правит еще мета поля самого товара. А Вы работаете в обход woo, напрямую с базой. К сожалению правильным кодом не поделюсь, у самого руки не дошли переписать, поищите в нете. Думаю надо работать с классом WC_Product и его производными.
    Ответ написан
    Комментировать