it-swarm.com.de

Auswahl von New & Edit Page für benutzerdefinierte Beitragstypen

Ich vermisse wahrscheinlich etwas, es sei denn, es ist wirklich nicht möglich. Aus irgendeinem Grund kann ich meine Funktion nicht nur für das neue und Bearbeiten ausführen lassen. Seite eines benutzerdefinierten Beitragstyps (der neue ist kein Problem):

Ich benutze derzeit:

if ((isset($_GET['post_type']) && $_GET['post_type'] == 'events') || (isset($post_type) && $post_type == 'tf_events')) {
    add_action('admin_init', "admin_head");
}

Dies funktioniert jedoch nur, wenn ein neuer Beitrag hinzugefügt wird, dessen URL lautet:

/post-new.php?post_type=events

Aber zum Bearbeiten eines Beitrags funktioniert es nicht, wenn die URL lautet:

/post.php?post=12&action=edit

(obwohl der Beitragstyp nicht zum Linkattribut hinzugefügt wurde)

ARBEITSCODE (Siehe Marks Antwort unten):

// 7. JS Datepicker UI

function events_styles() {
    global $post_type;
    if( 'tf_events' != $post_type )
        return;
    wp_enqueue_style('ui-datepicker', get_bloginfo('template_url') . '/css/jquery-ui-1.8.9.custom.css');
}

function events_scripts() {
    global $post_type;
    if( 'tf_events' != $post_type )
        return;
    wp_deregister_script('jquery-ui-core');
    wp_enqueue_script('jquery-ui', get_bloginfo('template_url') . '/js/jquery-ui-1.8.9.custom.min.js', array('jquery'));
    wp_enqueue_script('ui-datepicker', get_bloginfo('template_url') . '/js/jquery.ui.datepicker.min.js');
    wp_enqueue_script('custom_script', get_bloginfo('template_url').'/js/pubforce-admin.js', array('jquery'));
}

add_action( 'admin_print_styles-post.php', 'events_styles', 1000 );
add_action( 'admin_print_styles-post-new.php', 'events_styles', 1000 );

add_action( 'admin_print_scripts-post.php', 'events_scripts', 1000 );
add_action( 'admin_print_scripts-post-new.php', 'events_scripts', 1000 );
1
Noel Tock

Ok, vollständige Überarbeitung meiner ursprünglichen Antwort, die sich in ein Chaos verwandelt hat.

Das Problem mit Ihrem Code ist, dass Sie auf init feuern, dies deckt jede Admin-Seite ab, und es ist außerdem zu früh, Admin-Vars zu überprüfen, um die aktuelle Seite zu ermitteln (obwohl Sie einfach $_GET prüfen könnten, wenn Sie wirklich Code ausführen müssen, der das erfordert früh).

Sie möchten sich speziell mit den Post-Bearbeitungsseiten verbinden, obwohl Sie nicht angegeben haben, dass Sie die Post-Auflistung auf (edit.php) ausführen müssen, sodass ich dies aus den folgenden Beispielen ausschließen werde.

Sie können sich an einige verschiedene Aktionen binden, die innerhalb des Administratorkopfs ausgeführt werden, und dort alles Notwendige tun, um den Post-Typ zuverlässig zu überprüfen, indem Sie in Ihrer Rückruffunktion den Gültigkeitsbereich $post_type angeben.

So würde Ihr Rückruf ein wenig so etwas gehen ..

function mycallback() {
    global $post_type;
    if( 'events' != $post_type )
        return;
    // Do your code here
}

Die Aktion, auf die Sie sich einlassen möchten, hängt davon ab, was Sie zu diesem Zeitpunkt ausführen möchten. Wenn Sie nichts Besonderes tun, aber etwas ausführen möchten, ist der generische Admin-Head-Hook möglicherweise geeignet.

add_action( 'admin_head-post.php', 'mycallback', 1000 );
add_action( 'admin_head-post-new.php', 'mycallback', 1000 );

Wenn Sie ein Skript laden, verwenden Sie möglicherweise ..

add_action( 'admin_print_scripts-post.php', 'mycallback', 1000 );
add_action( 'admin_print_scripts-post-new.php', 'mycallback', 1000 );

Wenn Sie ein Stylesheet laden, dann möglicherweise ..

add_action( 'admin_print_styles-post.php', 'mycallback', 1000 );
add_action( 'admin_print_styles-post-new.php', 'mycallback', 1000 );

Sonst muss ich mehr darüber wissen, was du tust ... :)

3
t31os

sie können versuchen, global $ post aufzurufen.

global $post;
if ((isset($_GET['post_type']) && $_GET['post_type'] == 'events') || (isset($post_type) && $post_type == 'tf_events') || (get_post_type($post) == "events") || (get_post_type($post) == "tf_events")){) {
    add_action('admin_init', "admin_head");
}

Aktualisieren

versuchen :

global $typenow;
if( 'your_post_type' == $typenow ){
// do you stuff
}

stellen Sie außerdem sicher, dass Ihr Aufruf von register_post_type zuerst ausgeführt wird, damit der Post-Typ registriert wird, bevor dieser Code ausgeführt wird.

Hoffe das hilft.

1
Bainternet