Dave James Miller di GitHub memaku yang ini untukku. Tidak ada pekerjaan yang berasal dari saya, saya hanya memposting kodenya yang dibungkus menjadi plguin karena berfungsi dengan baik seperti yang diiklankan:
<?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);
Hubungkan ke
wp_insert_post
, uji status postingauto-draft
, dan URL untukGET
parameter.Tetapi pertama-tama kita membutuhkan fungsi pembantu untuk mendapatkan dan membersihkan
GET
parameter:Sekarang penangan konsep otomatis:
Ini hanya berfungsi jika
get_default_post_to_edit()
dipanggil dengan parameter kedua$create_in_db
diatur keTRUE
. Untuk menangkap kasus lain, Anda harus memfilter opsidefault_category
:Sekarang Anda dapat menggunakan parameter
post_cat
untuk melewati daftar siput kategori yang dipisahkan koma:Lihat juga:
sumber
Saya pikir Anda dapat pergi tentang opsi default
default_category
dan memfilteroption_default_category
ini, jika url memiliki param untuk kategori, seperti contoh sumber ini. Gunakan itu sebagai plugin, ujilah. Apakah menulis dari awal dan tidak diuji.Param url adalah
post_cat
dan Anda dapat mengatur kategorinya, seperti url ini:/wp-admin/post-new.php?post_cat=categoryname
sumber
Saya menyadari ini sudah dijawab, tetapi saya ingin menambahkan pendapat saya sendiri. Saya telah menambahkannya ke intisari di sini https://gist.github.com/malcalevak/ba05b4fbed0c6e33ac8c18c1451bd857
Untuk menyelamatkan Anda dari kerepotan, berikut ini kodenya:
Mirip dengan yang lainnya, Anda akan memicu melalui /wp-admin/post-new.php?category=categoryname
FYI, jika Anda menggunakan Bidang Kustom Lanjutan, seperti @Aphire, ini AKAN bekerja.
sumber