Как добавить кнопку на страницу записей пользовательского типа записей

1 сент. 2015 г., 08:46:16
Просмотры: 20.6K
Голосов: 4

Как можно добавить кнопку на страницу записей (в данном случае для пользовательского типа записей).

Я хотел бы разместить её рядом или поблизости с кнопкой "Добавить новую", чтобы импортировать контент из веб-сервиса.

0
Все ответы на вопрос 2
1

Вы можете добавить кнопку с помощью функции add_meta_box.

function add_your_meta_box(){

add_meta_box('your-metabox-id', 'Заголовок', 'function_of_metabox', 'custom_post_type', 'side', 'high');}

add_action('add_meta_boxes', 'add_your_meta_box'); 

function function_of_metabox()
{?>
    <input type="submit" class="button button-primary button-large" value="Добавить новый" id="add-new"/>
<?php }

Если нужно добавить к нескольким типам записей, используйте цикл foreach.

function add_your_meta_box(){

  $types = array("post","page","custom_post_type");

  foreach($types as $type){

    add_meta_box('your-metabox-id', 'Заголовок', 'function_of_metabox', $type, 'side', 'high');}

}

add_action('add_meta_boxes', 'add_your_meta_box'); 
1 сент. 2015 г. 12:03:28
Комментарии

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

Jouni S. Jouni S.
1 сент. 2015 г. 13:17:25
3

Вот так:

function custom_js_to_head() {
    ?>
    <script>
    jQuery(function(){
        jQuery("body.post-type-YOUR-CUSTOM-POST-TYPE .wrap h1").append('<a href="index.php?param=your-action" class="page-title-action">Импорт из ...</a>');
    });
    </script>
    <?php
}
add_action('admin_head', 'custom_js_to_head');

Этот код (вставленный в functions.php) динамически добавит новую ссылку после кнопки "Добавить новую".

1 сент. 2015 г. 09:50:26
Комментарии

Я немного надеялся, что можно будет обойтись без использования javascript. Но если нет хука для добавления кнопок, и можно безопасно предположить, что .wrap h1 существует в темах... Тогда, думаю, это приемлемо.

Jouni S. Jouni S.
1 сент. 2015 г. 09:56:10

Я не знаю ни одного хука, который мог бы разместить HTML именно в этом месте. И поскольку это основано на структуре HTML wp-admin, это не будет затронуто изменениями во фронтенд-теме.

Marek Marek
1 сент. 2015 г. 11:13:11

Очень странно, что нет "правильного способа в Wordpress" для этого. Или, возможно... это и есть "правильный способ в Wordpress"...

Alexandre Bourlier Alexandre Bourlier
25 мая 2017 г. 22:31:36