记录这几天用WordPress的一些问题,感觉WordPress的有些问题比织梦还难忍受呀,只能尽量百度解决了一些,现记录如下:
解决分类目录路径url问题
分类目录的链接一直有category,看着难受
//去除分类标志代码tq add_action( 'load-themes.php', 'no_category_base_refresh_rules'); add_action('created_category', 'no_category_base_refresh_rules'); add_action('edited_category', 'no_category_base_refresh_rules'); add_action('delete_category', 'no_category_base_refresh_rules'); function no_category_base_refresh_rules() { global $wp_rewrite; $wp_rewrite -> flush_rules(); } // Remove category base add_action('init', 'no_category_base_permastruct'); function no_category_base_permastruct() { global $wp_rewrite, $wp_version; if (version_compare($wp_version, '3.4', '<')) { // For pre-3.4 support $wp_rewrite -> extra_permastructs['category'][0] = '%category%'; } else { $wp_rewrite -> extra_permastructs['category']['struct'] = '%category%'; } } // Add our custom category rewrite rules add_filter('category_rewrite_rules', 'no_category_base_rewrite_rules'); function no_category_base_rewrite_rules($category_rewrite) { //var_dump($category_rewrite); // For Debugging $category_rewrite = array(); $categories = get_categories(array('hide_empty' => false)); foreach ($categories as $category) { $category_nicename = $category -> slug; if ($category -> parent == $category -> cat_ID)// recursive recursion $category -> parent = 0; elseif ($category -> parent != 0) $category_nicename = get_category_parents($category -> parent, false, '/', true) . $category_nicename; $category_rewrite['(' . $category_nicename . ')/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$'] = 'index.php?category_name=$matches[1]&feed=$matches[2]'; $category_rewrite['(' . $category_nicename . ')/page/?([0-9]{1,})/?$'] = 'index.php?category_name=$matches[1]&paged=$matches[2]'; $category_rewrite['(' . $category_nicename . ')/?$'] = 'index.php?category_name=$matches[1]'; } // Redirect support from Old Category Base global $wp_rewrite; $old_category_base = get_option('category_base') ? get_option('category_base') : 'category'; $old_category_base = trim($old_category_base, '/'); $category_rewrite[$old_category_base . '/(.*)$'] = 'index.php?category_redirect=$matches[1]'; //var_dump($category_rewrite); // For Debugging return $category_rewrite; } // Add 'category_redirect' query variable add_filter('query_vars', 'no_category_base_query_vars'); function no_category_base_query_vars($public_query_vars) { $public_query_vars[] = 'category_redirect'; return $public_query_vars; } // Redirect if 'category_redirect' is set add_filter('request', 'no_category_base_request'); function no_category_base_request($query_vars) { //print_r($query_vars); // For Debugging if (isset($query_vars['category_redirect'])) { $catlink = trailingslashit(get_option('home')) . user_trailingslashit($query_vars['category_redirect'], 'category'); status_header(301); header("Location: $catlink"); exit(); } return $query_vars; }
搜索中文不显示问题
搜索的中文不显示,改代码:
打开wp-includes/class-wp.php
查找代码
$pathinfo = isset( $_SERVER['PATH_INFO'] ) ? $_SERVER['PATH_INFO'] : '';
改成
$pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], "UTF-8", "GBK");
查找代码
list( $req_uri ) = explode( '?', $_SERVER['REQUEST_URI'] );
改成
list( $req_uri ) = mb_convert_encoding($_SERVER['REQUEST_URI'], "UTF-8", "GBK");
保存后覆盖原文件,网站的中文搜索就能正确执行了。
文章路径问题
后台设置中的固定链接,自定义
分类目录+id+.html
/%category%/%post_id%.html
解决上传图片生成多张尺寸的问题
设置-媒体,将尺寸全部设置为0,去掉勾选总是裁剪缩略图到这个尺寸(一般情况下,缩略图应保持原始比例)
解决wordpress自动生成768w像素缩略图的解决办法
打开WordPress【设置】-->【全部设置】{主题里面有个上帝模式:或者直接浏览器中http://你的域名/wp-admin/options.php},然后在浏览器按下Ctrl+F搜索medium_large_size_w 改为0就ok了!
解决文章id不连续问题
在当前主题的functions.php添加
define( 'AUTOSAVE_INTERVAL', false ); //禁用历史修订版本 // 禁用文档版本功能 define('WP_POST_REVISIONS', false); // 一键删除所有 文章/页面/说说 修订版本 //$wpdb->query("DELETE FROM $wpdb->posts WHERE post_type = 'revision'"); // 禁用自动保存,所以编辑长文章前请注意手动保存。 add_action( 'admin_print_scripts', create_function( '$a', "wp_deregister_script('autosave');" ) ); // WordPress 3.8测试有效 function keep_id_continuous(){ global $wpdb; // 删掉自动草稿和修订版 $wpdb->query("DELETE FROM `$wpdb->posts` WHERE `post_status` = 'auto-draft' OR `post_type` = 'revision'"); // 自增值小于现有最大ID,MySQL会自动设置正确的自增值 $wpdb->query("ALTER TABLE `$wpdb->posts` AUTO_INCREMENT = 1"); } add_filter( 'load-post-new.php', 'keep_id_continuous' ); add_filter( 'load-media-new.php', 'keep_id_continuous' ); add_filter( 'load-nav-menus.php', 'keep_id_continuous' );
防范风险,给后台地址加个后缀
方法很简单,在 functions.php 文件添加如下代码即可:
add_action('login_enqueue_scripts','login_protection'); function login_protection(){ if(($_GET['admin'] != 'cyhour') || ($_GET['password'] != 'dotcom')) header('Location: https://blog.xiaohuaduanzi.cn/'); }
这样,管理页面登录地址就变为:
https://域名/wp-login.php?admin=cyhour&password=dotcom
直接打开原来的后台地址 会跳转到博客首页,当然,也可以改成你想要的跳转页面。
还可以直接把下面代码添加到 wp-login.php 文件紧跟第一个 <?php 后面,效果一样。
if(($_GET['admin'] != 'cyhour') || ($_GET['password'] != 'dotcom')) header('Location: https://blog.xiaohuaduanzi.cn/');
关闭rss feed功能
这个破功能没啥用,在当前主题的functions.php添加
//关闭rss feed功能 function fb_disable_feed() { wp_die( __('本网站不再提供RSS Feed <a href="'. get_bloginfo('url') .'">首页</a>!') ); } add_action('do_feed', 'fb_disable_feed', 1); add_action('do_feed_rdf', 'fb_disable_feed', 1); add_action('do_feed_rss', 'fb_disable_feed', 1); add_action('do_feed_rss2', 'fb_disable_feed', 1); add_action('do_feed_atom', 'fb_disable_feed', 1);
WordPress自动检测标题防止发表内容的文章重复发布
添加了一套重复标题的检索功能,如果标题重复使用了系统会自动提醒并在你发表内容时,自动保存成草稿格式,且不会被成功发表。
方法很简单,还是继续增强你主题的functions.php 文件。
/** * 发表文章时禁止与已存在的标题相重复 * Modify from Plugin: Duplicate Title Validate * Description: this plugin help , not allow publish Duplicate Title . * Author: hasan movahed * Reviser: INLOJV * Version: 1.0 * Author URI: http://www.wallfa.com * Reviser URI: http://www.inlojv.com */ // 发表文章页面,前端抓取标题并使用AJAX发送请求 add_action( 'admin_print_footer_scripts', 'duplicate_titles_enqueue_scripts', 100 ); function duplicate_titles_enqueue_scripts() { ?> <script> jQuery(function($){ function checkTitleAjax(title, id,post_type) { var data = { action: 'title_checks', post_title: title, post_type: post_type, post_id: id }; $.post(ajaxurl, data, function(response) { $('#message').remove(); $('#poststuff').prepend('<div id=\"message\" class=\"updated below-h2 fade \"><p>'+response+'</p></div>'); }); }; $('#title').change(function() { var title = $('#title').val(); var id = $('#post_ID').val(); var post_type = $('#post_type').val(); checkTitleAjax(title, id,post_type); }); }); </script> <?php } // 接收前端ajax参数 add_action('wp_ajax_title_checks', 'duplicate_title_checks_callback'); function duplicate_title_checks_callback(){ global $wpdb; $title = $_POST['post_title']; $post_id = $_POST['post_id']; $titles = "SELECT post_title FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' AND post_title = '{$title}' AND ID != {$post_id} "; $results = $wpdb->get_results($titles); if($results) { echo "<span style='color:red'>". _( '此标题已存在,请换一个标题!' , '' ) ." </span>"; } else { echo '<span style="color:green">'._('恭喜,此标题未与其他文章标题重复!' , '').'</span>'; } die(); } // 检测后端标题并且避免同名文章更新草稿 add_action( 'publish_post','duplicate_titles_wallfa_bc' ) ; function duplicate_titles_wallfa_bc( $post ){ global $wpdb ; $title = $_POST['post_title'] ; $post_id = $post ; $wtitles = "SELECT post_title FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' AND post_title = '{$title}' AND ID != {$post_id} " ; $wresults = $wpdb->get_results( $wtitles ) ; if ( $wresults ){ $wpdb->update( $wpdb->posts, array( 'post_status' => 'draft' ), array( 'ID' => $post ) ) ; $arr_params = array( 'message' => '10', 'wallfaerror' => '1' ) ; $location = add_query_arg( $arr_params , get_edit_post_link( $post , 'url' ) ) ; wp_redirect( $location ) ; exit ; } } /// 文章提交更新后的提示 add_action( 'admin_notices', 'not_published_error_notice' ); function not_published_error_notice() { if(isset($_GET['wallfaerror']) == 1 ){ ?> <div class="updated"> <p style='color:red' ><?php _e('貌似已经存在相同标题的文章,若您使用了文章别名作为固定链接,则可以通过修改本文的固定链接来使标题不再重复!' , '') ?></p> </div> <?php } } // 禁用自动保存 add_action( 'wp_print_scripts', 'disable_autosave' ) ; function disable_autosave(){ wp_deregister_script( 'autosave' ) ; }
本文作者为青丝,转载请注明。
人生得意须尽欢,莫使金樽空对月
天生我材必有用,千金散尽还复来
昔我往矣,杨柳依依
悠哉悠哉,辗转反侧
关关雎鸠,在河之洲
还是挺好看的,测试
厉害了哦
测试,测试,测试,测试
厉害了呢啊,不错哦
@晴智依舒还好,还好了啊
不错,挺有用的
@qingge[aru_2],那是肯定的哦
@青丝感觉如何系统都有各种不必要的bug,但就是存在。。。
@晴智依舒是的,之前一直用织梦做网站的,现在感觉WordPress问题可能不比织梦的少多少。。。
@晴智依舒反正心累啊
@晴智依舒习惯就好了哦[aru_16]