Можно ли создать CPT на лету, когда в WordPress добавлено новое меню верхнего уровня? - PullRequest
3 голосов
/ 25 ноября 2011

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

Мне нужно создать собственный тип записи в админ-панели, когда клиент добавляет новую ссылку меню верхнего уровня. Это возможно?

У меня есть только основной код

function create_casestudies() {

$labels = array (
    'name' => __('Case Studies'),
    'singular_label' => __('Case Study'),
    'add_new' => __('Add New Case Study'),
    'add_new_item' => __('Add New Case Study'), 
    'edit' => __( 'Edit' ),
    'edit_item' => __( 'Edit Case Study' ),
    'new_item' => __( 'New Case Study' ),
    'view' => __( 'View Inspiration' ),
    'view_item' => __( 'View Case Study' ),
    'search_items' => __( 'Search Case Studies' ),
    'not_found' => __( 'No Case Studies found' ),
    'not_found_in_trash' => __( 'No Case Studies found in Trash' ),
    'parent' => __( 'Parent Case Studies' ),    
);

register_post_type(
    'casestudies',
    array( 
        'labels' => $labels,
        'public' => true,
        'show_ui' => true, 
        'capability_type' => 'post', 
        'menu_position' => 6,  
        'rewrite' => array('slug' => 'casestudy'),
        'supports' => array('title', 'editor', 'thumbnail')

    )
);
}   add_action('init', 'create_casestudies');

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

1 Ответ

0 голосов
/ 25 ноября 2011

Вам нужно создавать пользовательские типы сообщений, когда пользователь добавляет ссылку меню верхнего уровня? Или только один пользовательский тип сообщения?

Если это не определенное количество CPTS, возможно, вам лучше сохранить их в опции plugin_option или theme, а когда пользователь добавляет другой элемент меню верхнего уровня, вы добавляете новый элемент в свой BD. Затем ваша функция инициализации зациклит этот массив, создавая CPT на лету (и сохранит их созданными, так как она запускается при инициализации).

Если это только один CPT, это намного проще, просто добавьте опцию, которая сохраняет, если она должна или не должна запускать вашу функцию!

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...