Dave James Miller von GitHub hat diesen für mich festgenagelt. Keine der Arbeiten stammt von mir, ich poste nur seinen Code, der in einen Plguin eingewickelt ist, da er wie angekündigt perfekt funktioniert:
<?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);
Haken Sie ein
wp_insert_post
, testen Sie den Post-Status fürauto-draft
und die URL für einenGET
Parameter.Aber zuerst benötigen wir eine Hilfsfunktion, um den
GET
Parameter abzurufen und zu bereinigen :Jetzt der Auto-Draft-Handler:
Dies funktioniert nur, wenn
get_default_post_to_edit()
der zweite Parameter$create_in_db
auf aufgerufen wurdeTRUE
. Um den anderen Fall zu erfassen, müssen Sie die Option filterndefault_category
:Jetzt können Sie den Parameter verwenden
post_cat
, um eine durch Kommas getrennte Liste von Kategorie-Slugs zu übergeben:Siehe auch:
quelle
Ich denke, Sie können die Standardoption verwenden
default_category
undoption_default_category
diese filtern , wenn die URL einen Parameter für die Kategorie hat, wie in dieser Beispielquelle. Verwenden Sie es als Plugin, testen Sie es. Wurde von Grund auf neu geschrieben und nicht getestet.Der URL-Parameter lautet
post_cat
und Sie können die Kategorie wie folgt festlegen:/wp-admin/post-new.php?post_cat=categoryname
quelle
Mir ist klar, dass dies bereits beantwortet wurde, aber ich wollte meine eigene Einstellung hinzufügen. Ich habe es hier https://gist.github.com/malcalevak/ba05b4fbed0c6e33ac8c18c1451bd857 hinzugefügt
Um Ihnen den Ärger zu ersparen, ist hier der Code:
Ähnlich wie bei allen anderen würden Sie es über /wp-admin/post-new.php?category=categoryname auslösen
Zu Ihrer Information, wenn Sie erweiterte benutzerdefinierte Felder wie @Aphire verwenden, wird dies funktionieren.
quelle