<p>Ah, I still haven&#39;t managed to find the time to read all the guidelines :)</p>
<p>For me, it&#39;s also some standardization between Themes and plugins, teach them the right way first, and they&#39;ll never do it wrong. It&#39;s not only for existing themers, but also for the many people that are new to WordPress and will start by hacking up a theme, then move onto writing their own theme, then hopefully a plugin or 2, eventually giving something back to the WordPress core itself.. If the same best practices are held at every step of the way, hopefully we&#39;ll get a constant stream of awesome new developers learning it the right way :)</p>

<p> <br>
On Sep 28, 2011 12:04 AM, &quot;Chip Bennett&quot; &lt;<a href="mailto:chip@chipbennett.net">chip@chipbennett.net</a>&gt; wrote:<br>
&gt;<br>
&gt; I like that, Dion!<br>
&gt;<br>
&gt; Note that, for any Theme in the repository, the hook suffix is ALWAYS going to be appearance_page_$menu_slug (because we require use of add_theme_page()); however, any time we can suggest fail-safe code (such as your recommended implementation), I&#39;m all in favor of it.<br>

&gt;<br>
&gt; Chip<br>
&gt;<br>
&gt; On Tue, Sep 27, 2011 at 8:46 AM, Dion Hulse (dd32) &lt;<a href="mailto:wordpress@dd32.id.au">wordpress@dd32.id.au</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Some insight from a developer: The best location to get the Hook suffix for an added page, is from the add_*_page() call itself, For example:<br>
&gt;&gt;<br>
&gt;&gt; $theme_page = add_theme_page(<br>
&gt;&gt; __( &#39;Theme Options&#39;, &#39;twentyeleven&#39; ), // Name of page<br>
&gt;&gt; __( &#39;Theme Options&#39;, &#39;twentyeleven&#39; ), // Label in menu<br>
&gt;&gt; &#39;edit_theme_options&#39;, // Capability required<br>
&gt;&gt; &#39;theme_options&#39;, // Menu slug, used to uniquely identify the page<br>
&gt;&gt; &#39;twentyeleven_theme_options_render_page&#39; // Function that renders the options page<br>
&gt;&gt; );<br>
&gt;&gt;<br>
&gt;&gt; $theme_page is the hook suffix, this can then be used like this:<br>
&gt;&gt;<br>
&gt;&gt; add_action( &#39;admin_print_styles-&#39; . $theme_page, &#39;twentyeleven_admin_enqueue_scripts&#39; );<br>
&gt;&gt;<br>
&gt;&gt; There&#39;s no need to &quot;guess&quot; or hard code the hook suffix this way, and if for some reason it changes, you&#39;re guaranteed that WordPress will give you the right one. This is incredibly useful if you use the add_theme_page() wrappers, as if the appearance page moves to a different location/parent for some reason one day, you know the new slug returned will point to the new location - I doubt any developer wants to break backwards compatibility of that, it&#39;s a potential issue.<br>

&gt;&gt;<br>
&gt;&gt; Unfortunately, the TwentyEleven theme hard codes it, so I can&#39;t give that to you as a reference, just the above 2 changes and this codex page on how to add a Plugin page, and enqueue scripts only on it, it uses the same method as above (Remember, Plugin pages and Theme pages are a like in every way aside from the file it&#39;s in): <a href="http://codex.wordpress.org/Function_Reference/wp_enqueue_script#Load_scripts_only_on_plugin_pages">http://codex.wordpress.org/Function_Reference/wp_enqueue_script#Load_scripts_only_on_plugin_pages</a><br>

&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On 27 September 2011 23:26, Chip Bennett &lt;<a href="mailto:chip@chipbennett.net">chip@chipbennett.net</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Good morning, reviewers,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I thought this morning would be a good time to start a discussion on the guidelines/best-practices regarding enqueueing arbitrary scripts in the WordPress Admin area.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; As you know, current review generally focuses on ensuring that scripts intended for the front-end are not enqueued in the admin area, generally by wrapping the wp_enqueue_script() calls in a if ( ! is_admin() ) conditional. However: what about Themes that *do* need to enqueue scripts in the admin area, e.g. for their Theme settings page?<br>

&gt;&gt;&gt;<br>
&gt;&gt;&gt; I would like to get your thoughts on requiring the use of the admin_print_scripts-{$hook_suffix} for such scripts.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; For example, assuming the Theme uses add_theme_page(), for which the fourth argument is $menu_slug, this hook would be constructed as follows:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Base: admin_print_scripts-<br>
&gt;&gt;&gt;&gt; Context: appearance_page_<br>
&gt;&gt;&gt;&gt; Page: $menu_slug<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Or, put all together:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; admin_print_scripts-appearance_page_$menu_slug<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; For example, in Oenology, my $menu_slug is &quot;oenology-settings&quot;:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; admin_print_scripts-appearance_page_oenology-settings<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; So, the entire thing would look like:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; function oenology_enqueue_admin_scripts() {<br>
&gt;&gt;&gt;&gt;     wp_enqueue_script( &#39;some-arbitary-script&#39;, get_template_directory_uri() . &#39;/js/script-name.js&#39; );<br>
&gt;&gt;&gt;&gt; }<br>
&gt;&gt;&gt;&gt; add_action( &#39;admin_print_scripts-appearance_page_oenology-settings&#39;, &#39;oenology_enqueue_admin_scripts&#39; );<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I would like to propose this implementation as a &quot;best practice&quot; as a minimum; however, given the known issues regarding interaction between Theme and Plugin scripts in the Admin area (Plugin developers - rightly so - generally don&#39;t appreciate Themes outputting their scripts on every single admin page, because it often results in breakage of the Plugin if it relies on certain scripts being loaded/not loaded), I believe this is worthy of consideration as a requirement. But for now, I just want to get the discussion started.<br>

&gt;&gt;&gt;<br>
&gt;&gt;&gt; So: what are your thoughts?<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Chip<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; theme-reviewers mailing list<br>
&gt;&gt;&gt; <a href="mailto:theme-reviewers@lists.wordpress.org">theme-reviewers@lists.wordpress.org</a><br>
&gt;&gt;&gt; <a href="http://lists.wordpress.org/mailman/listinfo/theme-reviewers">http://lists.wordpress.org/mailman/listinfo/theme-reviewers</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; theme-reviewers mailing list<br>
&gt;&gt; <a href="mailto:theme-reviewers@lists.wordpress.org">theme-reviewers@lists.wordpress.org</a><br>
&gt;&gt; <a href="http://lists.wordpress.org/mailman/listinfo/theme-reviewers">http://lists.wordpress.org/mailman/listinfo/theme-reviewers</a><br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; theme-reviewers mailing list<br>
&gt; <a href="mailto:theme-reviewers@lists.wordpress.org">theme-reviewers@lists.wordpress.org</a><br>
&gt; <a href="http://lists.wordpress.org/mailman/listinfo/theme-reviewers">http://lists.wordpress.org/mailman/listinfo/theme-reviewers</a><br>
&gt;<br>
</p>