wordpress5.0新版编辑器切换经典编辑器插件Classic Editor

Zero零分 WordPress 2,802 0 3年前

WordPress更新到了新版,发现WordPress5.0版的编辑器采用了模块化编辑器,发布文章感觉不是很适应

百度了一下,可以通过插件Classic Editor切换回经典编辑器,安装插件,搜索Classic Editor

安装,启用,设置(可以在设置–撰写)中选择切换到经典编辑器

设置完之后,切换回写文章,发现编辑器已经是经典编辑器了,习惯了!

记录一下!

方法二:在function.php中添加:

add_filter('use_block_editor_for_post_type', '__return_false');
END

wordpress相邻文章(下一篇下一篇)显示文章略缩图

wordpress相邻文章(下一篇下一篇)显示文章相邻文章的略缩图,如 在没有略缩图时显示默认图片 原理:通过文章ID调用略缩图,functions.php插入调用略缩图函数 if(function_exists('add_theme_support')){ add_theme_support( 'post-thumbnails' ); } function post_thumbnail($id=false){ if(has_post_thumbnail($id)){ //如果有缩略图,则显示缩略图 the_post_thumbnail($id); }else{ global $post, $posts; $post_img = ''; $post_content=$id?get_post($id)->post_content:$post->post_content; ob_start(); ob_end_clean(); $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post_content, $matches); $post_img_src = $matches [1][0]; $post_img = $post_img_src; //如果没有缩略图,则显示日志中的第一张图片 if(empty($post_img_src)){ //如果日志中没有图片,则显示默认图片 $post_img = get_bloginfo("template_url").'/images/noimg.jpg'; } $post_img = str_replace('//','//',$post_img); return $post_img; } } 文章列表可以直接通过post_thumbnail()调用,在上一篇下一篇中通过相邻文章的ID调用,上一篇文章ID:get_previous_post()->ID,下一篇文章ID:get_next_post()->ID,调用代码 上一篇:post_thumbnail(get_previous_post()->ID) 下一篇:post_thumbnail(get_next_post()->ID) 当然也可以通过任意文章ID调用      
笔记 ·

wordpress添加编辑器可视化按钮代码

需要功能: 1、在编辑器可视化界面添加一个按钮 2、点击按钮弹出输入框 添加按钮: 在functions.php模板函数文件中添加插入按钮函数 挂载函数到正确的钩子 function outurl_mce_button() { // 检查用户权限 if ( !current_user_can( 'edit_posts' ) && !current_user_can( 'edit_pages' ) ) { return; } // 检查是否启用可视化编辑 if ( 'true' == get_user_option( 'rich_editing' ) ) { add_filter( 'mce_external_plugins', 'outurl_plugin' ); add_filter( 'mce_buttons', 'outurl_button' ); } } add_action('admin_head', 'outurl_mce_button'); 声明新按钮的脚本 function outurl_plugin( $plugin_array ) { $plugin_array['outurl'] = get_template_directory_uri() .'/images/js/outurl.js'; return $plugin_array; } 在编辑器上注册新按钮 function outurl_button( $buttons ) { array_push( $buttons, 'outurl' ); return $buttons; } outurl.js实现功能函数 (function () { tinymce.PluginManager.add('outurl', function (editor, url) { editor.addButton('outurl', { title: '添加外链', image: url+"/outurl.png", onclick: function () { //editor.insertContent('WPExplorer.com is awesome!'); editor.windowManager.open({ title: '请输入标签及外链', body: [ { label:'输入标签', type: 'textbox', name: 'outkey', minWidth: 400, minHeight: 30, multiline: false, value: '' }, { label:'输入链接', type: 'textbox', name: 'outurl', minWidth: 400, minHeight: 30, multiline: false, value: '' } ], onsubmit: function (e) { //获取输入内容 var outkey = e.data.outkey; var outurl = e.data.outurl; var urls=jQuery("#urls_value").val(); var urlarr=urls.split("[++++++++++]"); var i=urlarr.length; if(outkey.length > 0 && outurl.length > 0) { var txt=jQuery("#urls_value").val()+'[++++++++++]'+outurl; jQuery("#urls_value").val(txt); //将地址拼接到iframe ,输出到编辑器 editor.insertContent('[ outurl id='+i+']'+outkey+'[ /outurl]'); }else{ alert("标签和URL都不能为空!"); } } }); } }); }); })(); 最后处理短代吗 function outurl($atts,$content){ global $post; extract(shortcode_atts(array("id"=>'0'),$atts)); return '<a target="_blank" rel="nofollow" href="'.get_bloginfo("url").'/go?e='.$post->ID.'_'.$id.'_1_1_'.time().'">'.$content.'</a>'; } 以上是以博客外链为例  
笔记 ·

wordpress添加编辑器按钮

最近在写一个新的wordpress模板,其中有一个文章外链问题,需要在编辑器上添加一个按钮! 基本功能是:点击按钮弹出输入框,在输入框内黏贴外来链接,短代码功能修改链接跳转go=xxx这样 按钮移植这个博客的代码,发现问题: 1、不显示按钮 2、不支持jq 就算重新用这个博客的模板,一样无法使用这个功能,很奇怪,wordpress的版本是一样的! 也就是两个完全一样的环境下,两个模板的一些功能无法使用! 目前正在测试中,看具体是哪里的问题!
笔记 ·

WordPress评论表单添加验证码

上次看到朋友的博客,垃圾评论竟然上万条,这得多久没有进入后台?还是没有清理的习惯? 虽说,评论的用途似乎不是很大,WordPress现在折腾的人也少了吧。终究还是限制了一下评论,添加了一个验证码,且看下后续的效果 原本是想把验证码放在“提交评论”左侧的,但折腾了半天,还是不知道怎么放过来,测试了一些钩子,似乎也都不行。暂且先这样吧!
笔记 ·

wordpress多级菜单样式

WordPress多级菜单设置很简单,几乎所有的主题都会有菜单设置选项 但是,设置的多级菜单能利用CSS控制的样式,三级以上就不好控制,查看源码,二级及以上ul的class都是sub-menu,想要通过添加CSS来操作三级以上的菜单样式,是比较累的。好在可以通过Walker_Nav_Menu函数来控制ul的class样式,在function.php中插入以下函数 /** * Header_Menu_Walker类 * 这类名当然你随意了 */ class Header_Menu_Walker extends Walker_Nav_Menu { /** * start_lvl函数 * 这函数主要处理ul,如果ul有一些特殊的样式,修改这里 * 他这里面的$depth就是层级,一级二级三级 * $args是上面wp_nav_menu()函数定义的那个数组 * */ function start_lvl( &$output, $depth = 0, $args = array() ) { $indent = ( $depth > 0 ? str_repeat( "\t", $depth ) : '' ); // 缩进 $display_depth = ( $depth + 1); // 层级默认是0级,这里+1为了从1开始算 $classes = array( 'sub-menu', //ul是个子菜单的时候,添加这个样式 ( $display_depth % 2 ? 'menu-odd' : 'menu-even' ), //子菜单奇数加样式menu-odd,偶数加样式menu-even ( $display_depth >=2 ? 'sub-sub-menu' : '' ), //三级菜单的时候,添加这个样式 'menu-depth-' . $display_depth, //这样式主要能看出当前菜单的层级,menu-depth-2是二级呗 ); $class_names = implode( ' ', $classes ); //用空格分割多个样式名 $output .= "\n" . $indent . '' . "\n"; //把刚才定义的,那么多的样式,写到ul里面 } /** * start_el函数 * 主要处理li和里面的a * $depth和$args同上 * * @param string $output Passed by reference. Used to append additional content. * @param object $item Menu item data object. * @param int $depth Depth of menu item. Used for padding. * @param array $args An array of arguments. @see wp_nav_menu() * @param int $id Current item ID. */ function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) { global $wp_query; $indent = ( $depth > 0 ? str_repeat( "\t", $depth ) : '' ); // 缩进 // 定义li的样式 $depth_classes = array( ( $depth == 0 ? 'main-menu-item' : 'sub-menu-item' ), //一级的li,就main-menu-item,其余全部sub-menu-item ( $depth >=2 ? 'sub-sub-menu-item' : '' ), //三级的li,添加这个样式 ( $depth % 2 ? 'menu-item-odd' : 'menu-item-even' ), //奇数加样式menu-item-odd,偶数加样式menu-item-even 'menu-item-depth-' . $depth, //层级同上 ); $depth_class_names = esc_attr( implode( ' ', $depth_classes ) ); $classes = empty( $item->classes ) ? array() : (array) $item->classes; $class_names = esc_attr( implode( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) ) ); //这句我没看懂,不知道是在干啥 // 把样式合成到li里面 $output .= $indent . ''; // 处理a的属性 $attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) .'"' : ''; $attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) .'"' : ''; $attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $item->xfn ) .'"' : ''; $attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : ''; $attributes .= ' class="menu-link ' . ( $depth > 0 ? 'sub-menu-link' : 'main-menu-link' ) . '"'; //添加a的样式 $item_output = sprintf( '%1$s%3$s%4$s%5$s%6$s', $args->before, $attributes, $args->link_before, apply_filters( 'the_title', $item->title, $item->ID ), $args->link_after, $args->after ); //上面这个item_output我要说一下。这里写的有点死。 //如果一级菜单是我是菜单 //然而其他级菜单是我是菜单 //这样的情况,$args->link_before是固定值就不行了,要自行判断 //$link_before = $depth == 0 ? '' : ''; //$link_after = $depth == 0 ? '' : ''; //类似这个意思。 $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args ); } } 另附一段显示菜单描述的函数 function start_el(&$output, $item, $depth, $args) { global $wp_query; $indent = ( $depth ) ? str_repeat( "\t", $depth ) : ''; $class_names = $value = ''; $classes = empty( $item->classes ) ? array() : (array) $item->classes; $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) ); $class_names = ' class="' . esc_attr( $class_names ) . '"'; $output .= $indent . ''; $attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) .'"' : ''; $attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) .'"' : ''; $attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $item->xfn ) .'"' : ''; $attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : ''; $item_output = $args->before; $item_output .= ''; $item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after; $this_item_description.=''; $this_item_description_all=explode('+',$item->description); foreach($this_item_description_all as $this_item_description_all){ $this_item_description_one=explode('|',$this_item_description_all); $this_item_description.=''.$this_item_description_one[1].''; } $item_output .= '' . $this_item_description . ''; $item_output .= ''; $item_output .= $args->after; $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args ); } 这样,用css控制就比较好控制了,不同级别的ul样式class是不一样的!
WordPress ·
Zero零分
站龄15年资深站长
一个喜欢折腾,却又折腾不出像样东西的,不会PHP的PHP程序员!
476
文章
26
评论
27
分类
839
标签
7
友链
onlinelovesky 317355746 122551965@qq.com

百度广告