1.如何给WordPress可视化编辑器添加更多按钮
在上图中,我们可以看到,我们给wordpress文章编辑器添加了2个百度广告按钮,我们只需要发表文章时,在需要显示广告的地方点击一下这个百度按钮,就会在那里添加短代码 ,而不需要再像以前一样要一个一个地输入字符了。
这种效果只需2部就可以实现。1、将下面的代码放到主题的functions.php文件中:function baidu_button() {//判断用户是否有编辑文章和页面的权限if ( ! current_user_can('edit_posts') && ! current_user_can('edit_pages') ) {return;} //判断用户是否使用可视化编辑器if ( get_user_option('rich_editing') == 'true' ) {add_filter( 'mce_external_plugins', 'add_plugin' );add_filter( 'mce_buttons', 'register_button' );}}add_action('init', 'baidu_button');function register_button( $buttons ) {array_push( $buttons, “|”, “baidu1″ ); //添加 一个baidu1 按钮array_push( $buttons, “|”, “baidu2″ ); //添加 一个baidu2 按钮return $buttons;}function add_plugin( $plugin_array ) {//baidu2按钮的js路径$plugin_array['baidu1′] = get_bloginfo( 'template_url' ) . '/js/baidu1.js';//baidu2按钮的js路径$plugin_array['baidu2′] = get_bloginfo( 'template_url' ) . '/js/baidu2.js';return $plugin_array;}上面的代码,我们添加了2个百度按钮。
效果如上图。2、在主题文件夹的js文件夹里添加baidu1.js和baidu2.js2个JS文件,在这2个js文件中分别添加如下代码:baidu1.js文件/*给wordpress编辑器添加自定义按钮*/(function() {tinymce.create('tinymce.plugins.baidu1′, { //注意这里有个baidu1init : function(ed, url) {ed.addButton('baidu1′, { //注意这一行有一个baidu1title : '百度广告-1′,image : url+'/baidu.jpg', //注意图片的路径 url是当前js的路径onclick : function() {ed.selection.setContent('【baidu1】');}});},createControl : function(n, cm) {return null;},});tinymce.PluginManager.add('baidu1′, tinymce.plugins.baidu1);})();baidu2.js文件/*给wordpress编辑器添加自定义按钮*/(function() {tinymce.create('tinymce.plugins.baidu2′, { //注意这里有个baidu1init : function(ed, url) {ed.addButton('baidu2′, { //注意这一行有一个baidu1title : '百度广告-2′,image : url+'/baidu.jpg', //注意图片的路径 url是当前js的路径onclick : function() {ed.selection.setContent('【baidu2】');}});},createControl : function(n, cm) {return null;},});tinymce.PluginManager.add('baidu2′, tinymce.plugins.baidu2);})();然后在这个js文件夹里添加一个百度图标,图片名称为baidu.jpg ,这样就可以了。
注:需要把js代码中的【baidu】各【baidu2】这2个中文中括号修改成英文的中括号。否则会出错哦。
这里没有添加百度广告代码,这个在前面的章节中已经介绍过如何添加,所以这里就不多说了。
2.如何在WordPress上正确加载Javascript和CSS
下面这个例子在 add_action 钩子中使用 init。
使用 init 有两个原因,一是因为我们正在注销WordPress默认的jQuery库,然后加载谷歌的jQuery库;二是确保在WordPress的头部就加载脚本和CSS。使用if ( !is_admin() )是为了确保这些脚本和css只在前端加载,不会再后台管理界面加载。
/** Google jQuery Library, Custom jQuery and CSS Files */ function myScripts() { wp_register_script( 'google', '/ajax/libs/jquery/1.8.2/jquery.js' ); wp_register_script( 'default', get_template_directory_uri() . '/jquery.js' ); wp_register_style( 'default', get_template_directory_uri() . '/style.css' ); if ( !is_admin() ) { /** Load Scripts and Style on Website Only */ wp_deregister_script( 'jquery' ); wp_enqueue_script( 'google' ); wp_enqueue_script( 'default' ); wp_enqueue_style( 'default' ); } } add_action( 'init', 'myScripts' );加载WP默认 jQuery 库和主题自定义的脚本、样式第3行:使用 array('jquery') 是为了告诉 WordPress 这个 jquery.js 是依赖WordPress 的jQuery库文件,从而使 jquery.js 在WordPress jQuery库文件后加载。/** Add Custom jQuery and CSS files to a Theme */ function myScripts() { wp_register_script( 'default', get_template_directory_uri() . '/jquery.js', array('jquery'), '' ); wp_register_style( 'default', get_template_directory_uri() . '/style.css' ); if ( !is_admin() ) { /** Load Scripts and Style on Website Only */ wp_enqueue_script( 'default' ); wp_enqueue_style( 'default' ); } } add_action( 'init', 'myScripts' );加载 print.css 到你的WordPress主题第 3 行:最后的 'print'是媒体屏幕调用,确保 print.css 在网站的打印机中的文件加载时才加载。
/** Adding a Print Stylesheet to a Theme */ function myPrintCss() { wp_register_style( 'print', get_template_directory_uri() . '/print.css', '', '', 'print' ); if ( !is_admin() ) { /** Load Scripts and Style on Website Only */ wp_enqueue_style( 'print' ); } } add_action( 'init', 'myPrintCss' );使用 wp_enqueue_scripts 替换 init如果你要在文章或页面加载唯一的脚本,那就应该使用 wp_enqueue_scripts 替换 init。使用 wp_enqueue_scripts 仅仅只会在前台加载脚本和CSS,不会在后台管理界面加载,所以没必要使用 !is_admin() 判断。
使用 is_single() 只在文章加载脚本或CSS第 3 行的 # 替换为文章的ID就可以让脚本和css只加载到那篇文章。当然,如果直接使用 is_single() (不填ID),就会在所有文章加载脚本和CSS。
/** Adding Scripts To A Unique Post */ function myScripts() { if ( is_single(#) ) { /** Load Scripts and Style on Posts Only */ /** Add jQuery and/or CSS Enqueue */ } } add_action( 'wp_enqueue_scripts', 'myScripts' );使用 is_page() 只在页面加载脚本或CSS第 3 行的 # 替换为页面的ID就可以让脚本和css只加载到那个页面。当然,如果直接使用 is_single() (不填ID),就会在所有页面加载脚本和CSS。
/** Adding Scripts To A Unique Page */ function myScripts() { if ( is_page(#) ) { /** Load Scripts and Style on Pages Only */ /** Add jQuery and/or CSS Enqueue */ } } add_action( 'wp_enqueue_scripts', 'myScripts' );使用 admin_enqueue_scripts 加载脚本到后台这个例子将在整个后台管理界面加载脚本和CSS。这个方法不推荐用在插件上,除非插件重建了整个后台管理区。
第 10 行使用 admin_enqueue_scripts 替换了 init 或 wp_enqueue_scripts第 5、6 行,如果你要自定义后台管理区,你可以需要禁用默认的WordPress CSS调用。/** Adding Scripts To The WordPress Admin Area Only */ function myAdminScripts() { wp_register_script( 'default', get_template_directory_uri() . '/jquery.js', array('jquery'), '' ); wp_enqueue_script( 'default' ); //wp_deregister_style( 'ie' ); /** removes ie stylesheet */ //wp_deregister_style( 'colors' ); /** disables default css */ wp_register_style( 'default', get_template_directory_uri() . '/style.css', array(), '', 'all' ); wp_enqueue_style( 'default' ); } add_action( 'admin_enqueue_scripts', 'myAdminScripts' );加载脚本和CSS到WordPress登录界面第 6 行:我无法弄清楚如何在在登录页面注册/排序 CSS文件,所以这行手动添加样式表。
第 10-14行:用来移除WordPress默认的样式表。/** Adding Scripts To The WordPress Login Page */ function myLoginScripts() { wp_register_script( 'default', get_template_directory_uri() . '/jquery.js', array('jquery'), '' ); wp_enqueue_script( 'default' ); ?> ' type='text/css' media='all' /> <?php } add_action( 'login_enqueue_scripts', 'myLoginScripts' ); /** Deregister the login css files */ function removeScripts() { wp_deregister_style( 'wp-admin' ); wp_deregister_style( 'colors-fresh' ); } add_action( 'login_init', 'removeScripts' );将 jQuery 库移动到页脚你不能将WordPress默认的jQuery 库移动到页面底部,但是你可以将自定义的jQuery 或其他外部jQuery 库(比如。
转载请注明出处51数据库 » wordpress加载更多