Создайте 3 кнопки для нового поста для разных категорий.

Вопрос или проблема

Я настраиваю панель администратора WordPress. У меня есть пользователи с ролями, позволяющими писать только в 3 категории. Я хотел бы разработать 3 кнопки или блока для создания нового поста, но каждый для другой категории. Это в панели управления.

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

Есть идеи?

explanation image

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

Так что просто создайте функцию, которая создаст новый пост по нажатию кнопки.

Проблема в том, что вы найдете много пустых постов, если пользователь будет играть с этой ссылкой.

Чтобы создать виджет панели управления, вы можете ознакомиться с официальной документацией wp_add_dashboard_widget

Если вы используете настраиваемые типы постов, тогда вы можете использовать ссылки такие как:

/wp-admin/post-new.php?post_type=news
/wp-admin/post-new.php?post_type=sport
/wp-admin/post-new.php?post_type=people

в вашей панели управления, чтобы перейти на соответствующую страницу нового поста.

Обновление:

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

/wp-admin/index.php?mycat=20

добавив следующий код в ваш functions.php файл (или создайте плагин с этим кодом):

add_action( 'admin_head-index.php', 'my_post_preset_wpse_99518' );
function my_post_preset_wpse_99518() {
        global $current_user;
        $allowed_cat_ids = array(10,20); //ИЗМЕНИТЕ  
        if(isset($_GET['mycat'])){
                $mycat = (int) $_GET['mycat']; 
                if(in_array($mycat, $allowed_cat_ids, TRUE)){
                        $newpost = array(
                                'post_title' => ' ', // заголовок должен быть непустым
                                'post_status' => 'draft', 
                                'post_date' => date('Y-m-d H:i:s'), 
                                'post_author' => $current_user->ID, 
                                'post_category' => array($mycat), 
                        );
                        $newpostobj = get_post(wp_insert_post($newpost)); 
                        if($newpostobj)
                            wp_redirect(admin_url("post.php?action=edit&post={$newpostobj->ID}"));
                            exit();

                }
        }
}

где вы редактируете эту строку в соответствии с вашими нуждами:

        $allowed_cat_ids = array(10,20); //ИЗМЕНИТЕ  

Это вставит новый пост с предустановленной категорией.

Ответ или решение

Для настройки пользовательского интерфейса на панели управления WordPress, с целью создания новых постов для трех различных категорий, мы можем следовать следующей методике с использованием кода, который поможет нашим пользователям с соответствующими ролями быстрее публиковать материалы в нужные категории. Ниже приведен детализированный подход к созданию кнопок.

Шаг 1: Определение целевых категорий

Перед тем как создавать кнопки, необходимо определить идентификаторы категорий, в которые будут размещаться новые посты. Предположим, что у нас есть три категории с идентификаторами 10, 20 и 30.

Шаг 2: Добавление кнопок на панель администратора

Мы будем использовать функцию wp_add_dashboard_widget() для добавления пользовательского виджета на панель управления. В этом виджете мы разместим три кнопки для создания новых постов. Добавьте следующий код в файл functions.php вашей темы или в файл плагина:

// Добавление пользовательского виджета на панель управления
add_action('wp_dashboard_setup', 'add_custom_dashboard_widget');

function add_custom_dashboard_widget() {
    wp_add_dashboard_widget('custom_post_buttons', 'Создать новый пост', 'custom_post_buttons_display');
}

function custom_post_buttons_display() {
    // Кнопки для создания новых постов
    echo '<a href="' . admin_url('index.php?mycat=10') . '" class="button button-primary">Создать пост в категории 1</a><br />';
    echo '<a href="' . admin_url('index.php?mycat=20') . '" class="button button-secondary">Создать пост в категории 2</a><br />';
    echo '<a href="' . admin_url('index.php?mycat=30') . '" class="button button-success">Создать пост в категории 3</a>';
}

Шаг 3: Обработка кнопок для создания постов

Теперь нам нужно обработать нажатия на кнопки, чтобы автоматически создавать черновик поста с заданной категорией. Добавьте следующий код в файл functions.php:

add_action('admin_head-index.php', 'my_post_preset');

function my_post_preset() {
    global $current_user;
    $allowed_cat_ids = array(10, 20, 30); // Идентификаторы категорий
    if (isset($_GET['mycat'])) {
        $mycat = (int)$_GET['mycat']; 
        if (in_array($mycat, $allowed_cat_ids, true)) {
            $newpost = array(
                'post_title' => ' ', // Заголовок должен быть непустым
                'post_status' => 'draft', 
                'post_date' => current_time('mysql'), 
                'post_author' => $current_user->ID, 
                'post_category' => array($mycat), 
            );
            $newpostobj = get_post(wp_insert_post($newpost)); 
            if ($newpostobj) {
                wp_redirect(admin_url("post.php?action=edit&post={$newpostobj->ID}"));
                exit();
            }
        }
    }
}

Заключение

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

Этот подход также позволяет достаточно гибко настраивать категории и другие элементы поста, если это будет необходимо в будущем. Не забудьте протестировать все функции после их добавления, чтобы убедиться, что ваша панель управления работает исправно.

Оцените материал
Добавить комментарий

Капча загружается...