WordPress 固定链接标题别名自动转换 MD5 码,亲测有效。

WordPress 固定链接有多种方式,其中有不少人喜欢设置格式为文章标题所为固定链接形式。

使用文章标题作为固定链接形式,英文还好,如果是中文,则需要手动修改链接别名,否则会变成长长的中文转码,很不好看。

当然,也可以采用自动翻译标题为别名的插件,但是,由于自动翻译会拖慢整个 WordPress 网站。

如果觉得固定链接为标题形式比较麻烦,比如,本博客的就以文章 ID 为固定链接形式。

固定链接的地址设置为 post_id 也有一个弊端,几乎空间每出一次问题,ID就会换上一次,对Google搜索的收录很不好。

因此,有位达人写了这则代码,采用标题的 MD5 码作为固定链接形式,这样子,只要标题不同撞车的机率非常少。

WordPress 固定链接标题别名自动转换 MD5 码,亲测有效。

 

PS: 切记,用这种形式的链接,就要把固定链接当中的 文章ID 改成 PostName 的形式。新发布的文章会自动生效,旧文章需要“更新”一下才能生效(可以用文章批量编辑功能来处理)。

 

 

把下面的代码加入 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();

 

未经允许不得转载:泥人传说 » WordPress 固定链接标题别名自动转换 MD5 码,亲测有效。
分享到:
赞(0)

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址