关于wordpress出现的一些问题修复

青丝 5,988 阅读 17

记录这几天用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' ) ;
}

相关推荐
热门推荐
发表评论 取消回复
表情 图片

  1. 天空
    天空 Lv 2

    人生得意须尽欢,莫使金樽空对月

  2. 天空
    天空 Lv 2

    天生我材必有用,千金散尽还复来

  3. 天空
    天空 Lv 2

    昔我往矣,杨柳依依

  4. 天空
    天空 Lv 2

    悠哉悠哉,辗转反侧

  5. 天空
    天空 Lv 2

    关关雎鸠,在河之洲

  6. 天空
    天空 Lv 2

    还是挺好看的,测试

  7. 我们的哎
    我们的哎 Lv 2

    厉害了哦

  8. 小妖精
    小妖精 Lv 2

    测试,测试,测试,测试

  9. 晴智依舒
    晴智依舒 Lv 1

    厉害了呢啊,不错哦

  10. qingge
    qingge Lv 2

    不错,挺有用的

    • 青丝
      青丝 站长

      @qingge[aru_2],那是肯定的哦

      • 晴智依舒
        晴智依舒 Lv 1

        @青丝感觉如何系统都有各种不必要的bug,但就是存在。。。

        • 青丝
          青丝 站长

          @晴智依舒是的,之前一直用织梦做网站的,现在感觉WordPress问题可能不比织梦的少多少。。。

        • 晴智依舒
          晴智依舒 Lv 1

          @晴智依舒反正心累啊

分享