教你把WordPress文章别名自动设置为英文/文章ID详细教程
简介
今天无意间发现写文章的别名比较冗长,想修改的简洁一点。但凡在使用wordpress程序的站长我相信肯定对于文
章的别名不会陌生,别名是指向该特定页面的URL 的一部分。一般而言,别名通常与原始标题非常相似。我这里就教大
家如何来将wordpress文章别名设置为英文或者文章ID的方法。
教程
自动修改新文章的别名设置为文章的ID
我们可以使用下面的代码添加到主题的functions.php文件中,这样你新建的文章就会自动的使用ID当做别名
/**
* WordPress新文章自动使用ID作为别名
*/
add_action( 'save_post', 'using_id_as_slug', 10, 2 );
function using_id_as_slug($post_id, $post){
global $post_type;
if($post_type=='post'){ //只对文章生效
// 如果是文章的版本,不生效
if (wp_is_post_revision($post_id))
return false;
// 取消挂载该函数,防止无限循环
remove_action('save_post', 'using_id_as_slug' );
// 使用文章ID作为文章的别名
wp_update_post(array('ID' => $post_id, 'post_name' => $post_id ));
// 重新挂载该函数
add_action('save_post', 'using_id_as_slug' );
}
}
上面的方法适用于新创建的文章,但是我们如果想要修改老的文章,就还需要利用下面的代码进行
自动修改旧文章别名为文章ID
使用下面的代码添加到主题的functions.php文件中,然后访问http://这里是你网站域名.com?post_name_id=yes
操作时记得先备份数据库,备份是一个好习惯,避免不必要的灾难发生,文章较多的话网页加载的时间就比较久,耐心等
待加载完成,加载完成后,删除添加的这个修改旧文章的代码即可,这样所有文章的别名都会变成文章ID了
/**
* 修改WordPress旧文章别名为文章ID
*/
function Bing_post_name_id(){
query_posts( 'posts_per_page=-1' );
while( have_posts() ){
the_post();
$post_id = $GLOBALS['post']->ID;
wp_update_post( array(
'ID' => $post_id,
'post_name' => $post_id
) );
}
wp_reset_query();
}
if( $_GET['post_name_id'] == 'yes' ) add_action( 'init', 'Bing_post_name_id' );
测试效果
生效成功后,就如下图
自动修改文章别名设置为英文
本方法可以将文章别名设置为文章标题的英文,原理是通过百度翻译和微软翻译自动生成文章英文别名。不过这种
方式经过我验证,不推荐,经过翻译查询速度比较慢,而且名称特别长
// 自动生成英文别名 - 百度版
function bymt_slug_auto_translate( $title ) {
$wp_http_get = wp_safe_remote_get( 'http://fanyi.baidu.com/v2transapi?from=zh&to=en&transtype=trans&query=' . $title );
if ( emptyempty( $wp_http_get->errors ) ) {
if ( ! emptyempty( $wp_http_get['body'] ) ) {
$trans_result = json_decode( $wp_http_get['body'], true );
$trans_title = $trans_result['trans_result']['data'][0]['dst'];
return $trans_title;
}
}
return;
}
add_filter( 'sanitize_title', 'bymt_slug_auto_translate', 1 );
这个是微软翻译版的版本
// 自动生成英文别名 - 微软版
function bymt_slug_auto_translate( $title ) {
$wp_http_get = wp_safe_remote_get( 'http://api.microsofttranslator.com/v2/ajax.svc/TranslateArray2?appId=%22TKT68kjRgkUbVtIKst6Vo0Hxnb6g2f0K3tUMyn1gZ7nc*%22&from="zh"&to="en"&options={}&texts=["' . $title . '"]' );
if ( emptyempty( $wp_http_get->errors ) ) {
if ( ! emptyempty( $wp_http_get['body'] ) ) {
preg_match('/"TranslatedText":"([^"]+)/i', $wp_http_get['body'], $trans_result);
$trans_title = $trans_result[1];
return $trans_title;
}
}
return;
}
还有一种方法是使用插件来设置别名为拼音的,这里我就不过多介绍,有兴趣的可以自己去
搜Pinyin SEO、WP Slug Translate、wp slug translate、Auto Tag Slug
版权声明:
作者:ivpsr.com
链接:https://ivpsr.com/3157.html
文章版权归作者所有,未经允许请勿转载。
THE END