Дэйв Джеймс Миллер из GitHub приколол мне этот. Ни одна из работ не от меня, я просто публикую его код, завернутый в плагин, так как он работает отлично, как рекламируется:
<?php
/**
* Plugin Name: Set default category from url parameter
* Plugin URI: https://gist.github.com/davejamesmiller/1966543
* Description: enables you to setup new post links with the post_title, category and tags in the url: <code><a href="<?= esc_attr(admin_url('post-new.php?post_title=Default+title&category=category1&tags=tag1,tag2')) ?>">New post</a></code>
* Version: 0.0.1
* Author: davejamesmiller
* Author URI: https://gist.github.com/davejamesmiller
*/
// I used this code to automatically set the default post title, category and
// tags for a new WordPress post based on which link was clicked. It could also
// be tweaked to hard-code the values instead of using request parameters.
add_filter('wp_get_object_terms', function($terms, $object_ids, $taxonomies, $args)
{
if (!$terms && basename($_SERVER['PHP_SELF']) == 'post-new.php') {
// Category - note: only 1 category is supported currently
if ($taxonomies == "'category'" && isset($_REQUEST['category'])) {
$id = get_cat_id($_REQUEST['category']);
if ($id) {
return array($id);
}
}
// Tags
if ($taxonomies == "'post_tag'" && isset($_REQUEST['tags'])) {
$tags = $_REQUEST['tags'];
$tags = is_array($tags) ? $tags : explode( ',', trim($tags, " \n\t\r\0\x0B,") );
$term_ids = array();
foreach ($tags as $term) {
if ( !$term_info = term_exists($term, 'post_tag') ) {
// Skip if a non-existent term ID is passed.
if ( is_int($term) )
continue;
$term_info = wp_insert_term($term, 'post_tag');
}
$term_ids[] = $term_info['term_id'];
}
return $term_ids;
}
}
return $terms;
}, 10, 4);
Подключитесь
wp_insert_post
, проверьте статус сообщенияauto-draft
и URL дляGET
параметра.Но сначала нам нужна вспомогательная функция для получения и очистки
GET
параметра:Теперь обработчик автопроекта:
Это работает, только если
get_default_post_to_edit()
был вызван со вторым параметром,$create_in_db
установленным вTRUE
. Чтобы поймать другой случай, вы должны отфильтровать опциюdefault_category
:Теперь вы можете использовать этот параметр
post_cat
для передачи списка разделенных запятыми категорий слагов:Смотрите также:
источник
Я думаю, что вы можете перейти к опции по умолчанию
default_category
и отфильтроватьoption_default_category
ее, если в URL есть параметр для категории, как в примере с исходным кодом. Используйте его как плагин, протестируйте его. Был написан с нуля и не проверен.Параметр url
post_cat
и вы можете установить категорию, как этот URL:/wp-admin/post-new.php?post_cat=categoryname
источник
Я понимаю, что на это уже ответили, но я хотел добавить свой собственный дубль. Я добавил его в список здесь https://gist.github.com/malcalevak/ba05b4fbed0c6e33ac8c18c1451bd857
Чтобы избавить вас от хлопот, вот код:
Подобно всем остальным, вы бы запустили его через /wp-admin/post-new.php?category=categoryname
К вашему сведению, если вы используете расширенные пользовательские поля, такие как @Aphire, это БУДЕТ работать.
источник