it-swarm.com.de

Laden von Skripten und CSS für Administratoren nur beim Bearbeiten oder Hinzufügen von Beiträgen

Ich habe ein Plugin, mit dem Administratoren bestimmte Aktionen ausführen können, wenn sie einen Beitrag hinzufügen oder bearbeiten. Ich verwende ein Stylesheet und ein Javascript für dieses Plugin, das ich nur einschließen möchte, wenn ein Beitrag hinzugefügt oder bearbeitet wird. Bin ich berechtigt, die folgenden Aktions-Hooks zu verwenden?

add_action('load-post.php', 'call_my_function');
add_action('load-post-new.php', 'call_my_function');

Innerhalb der Funktion call_my_function habe ich:

function call_my_function() {
  $plugin_directory = "/wp-content/plugins/".dirname(plugin_basename(__FILE__));
  $jssrc = $plugin_directory.'/js/my_plugin.js';
  wp_enqueue_script("my_plugin_js", $jssrc);
  $csssrc = $plugin_directory.'/css/my_plugin.css';
  wp_enqueue_style("my_plugin_css", $csssrc);
}

Der obige Code lädt die CSS- und Javascript-Dateien erfolgreich, wenn sie nicht vom Hook add_action aufgerufen werden. Es funktioniert nicht erfolgreich, wenn es von diesen Hooks aufgerufen wird.

3
ChiCgi

sie möchten admin_print_scripts-(page_hook) und admin_print_styles-(page_hook) verwenden, in Ihrem Fall also:

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

add_action('admin_print_styles-post.php', 'call_my_styles_function');
add_action('admin_print_styles-post-new.php', 'call_my_styles_function');
5
Milo

Es funktioniert nicht erfolgreich, wenn es von diesen Hooks aufgerufen wird.

Ich schlage vor, Sie überprüfen die Quelle der Seite, diese Haken funktionieren gut für Warteschlangen. Ich habe Ihren Code trotzdem kopiert, um zu überprüfen, und ich sehe sowohl das Stylesheet als auch das Skript in der Warteschlange, wenn ich die Hooks verwende.

Die Art und Weise, wie Sie die Warteschlangen laden, sieht jedoch falsch aus. Ich würde Folgendes vorschlagen.

function call_my_function() {
    wp_enqueue_script("my_plugin_js", plugins_url( '/js/my_plugin.js', __FILE__ ) );
    wp_enqueue_style("my_plugin_css", plugins_url( '/css/my_plugin.css', __FILE__ ) );
}
0
t31os

dieser funktioniert für mich, einschließlich der Skripte auf einer benutzerdefinierten Untermenüseite:

add_action('admin_menu', 'register_my_custom_submenu_pages');

function register_my_custom_submenu_pages() {

    $email_menu = add_submenu_page( 'edit.php?post_type=events', 'Email Users', 'Email Users', 'edit_others_posts', 'email', 'email_callback' ); 

    add_action( 'admin_print_styles-' . $email_menu, 'email_custom_css' );
    add_action( 'admin_print_scripts-' . $email_menu, 'email_custom_js' );  

}

function email_callback() {

    echo '<div class="wrap">';
        echo '<h2>'.get_admin_page_title().'</h2>';
        include get_stylesheet_directory() . '/admin/email.php';
    echo '</div>';

}

function email_custom_css()
{ 
    wp_enqueue_style( 'chosen',get_stylesheet_directory_uri().'/js/chosen/chosen.min.css' ); 
}; 

function email_custom_js()
{ 
    wp_enqueue_script( 'chosen', get_stylesheet_directory_uri().'/js/chosen/chosen.jquery.min.js', array('jquery')); 
};

kurz gesagt, könnte dies für Sie bedeuten:

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

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

function custom_css_load()
{ 
    wp_enqueue_style( 'my_styles', plugins_url( '/css/my_plugin.css', __FILE__ ) ); 
}; 

function custom_js_load()
{ 
    wp_enqueue_script( 'my_scripts', plugins_url( '/js/my_plugin.js', __FILE__ ), array('jquery')); 
};

Vergessen Sie nicht, nach jQuery zu laden, wenn Ihr js-Code davon abhängt.

Ich teste das nicht, also mach damit, wie du willst :)

0