WordPress 固定链接标题别名自动转换 MD5 码

更新时间:2018-10-06 分类:设计主题 浏览量:2788

WordPress 固定链接标题别名自动转换 MD5 码

WordPress 固定链接有多种方式,其中有不少人喜欢设置格式为文章标题所为固定链接形式。使用文章标题作为固定链接形式,英文还好,如果是中文,则需要手动修改链接别名,否则会变成长长的中文转码,很不好看。当然,也可以采用自动翻译标题为别名的插件,但是,由于自动翻译会拖慢整个 WordPress 网站。如果觉得固定链接为标题形式比较麻烦,比如,本博客的就以文章 ID 为固定链接形式。固定链接的地址设置为 post_id 也有一个弊端,几乎空间每出一次问题,ID就会换上一次,对Google搜索的收录很不好。因此,有位达人写了个插件,采用标题的 MD5 码作为固定链接形式,这样子,只要标题不同撞车的机率非常少。

插件功能:

  • 只对博客日记的固定链接进行修改,修改页面的固定链接。
  • 支持通过网页添加的日记和通过XML-RPC发布的日记。

作者:宇托 博客:宇托的狗窝

插件截图:

编辑界面:

浏览器界面:

下载地址:作者博客 | WordPress 插件

集成主题,把下面的代码加入 function.php 文件中


if (!class_exists('wp_slup_md5code')):
class wp_slup_md5code {

    var $post_title = '';
    var $post_type = '';

    function wp_slup_md5code() {
        global $wp_version;

        add_filter('type_save_pre', array(&$this, 'get_post_type'), 0);
        add_filter('title_save_pre', array(&$this, 'get_post_title'), 0);
        add_filter('name_save_pre', array(&$this, 'set_post_name'), 0);

        if ($wp_version > 2.4 && strpos($_SERVER['REQUEST_URI'], 'admin-ajax.php') > 0
                && $_POST['action'] === 'sample-permalink') {

            add_filter('sanitize_title', array(&$this, 'w25_ajax_slug'), 0);
            register_shutdown_function(array(&$this, 'w25_ajax_remove'));
        }
    }

    function get_post_type($type) {
        $this->post_type = $type;
        return $type;
    }

    function get_post_title($title) {
        $this->post_title = $title;
        return $title;
    }

    function set_post_name($name) {
        if (strcmp('post', $this->post_type) == 0) {
            $name = $this->md5_encoding($this->post_title);
        }
        return $name;
    }

    function w25_ajax_slug($name) {
        remove_filter('sanitize_title', array(&$this, 'w25_ajax_slug'), 0);
        if (strcmp('post', $_POST['post_type']) == 0) {
            $name = $this->md5_encoding($_POST['new_title']);
        }
        add_filter('sanitize_title', array(&$this, 'w25_ajax_slug'), 0);
        return $name;
    }

    function w25_ajax_remove() {
        remove_filter('sanitize_title', array(&$this, 'w25_ajax_slug'), 0);
    }

    private function md5_encoding($str) {
        $str = trim(strip_tags($str));
        if (strlen($str) == 0) {
            return $str;
        }

        $str = mb_convert_encoding($str, 'UTF-8');

        $md5_str = md5($str);
        $md5_str = substr($md5_str, 8, 16);
        return $md5_str;
    }
}

endif;

$wp_slup_md5code = new wp_slup_md5code();