WordPress获取当前文章别名
相信很多人在使用WordPress的时候,都喜欢使用文章别名作为固定链接,如我的博客固定链接形式为 http://www.ludou.org/%postname%.html,这个postname就是文章的别名(也称 slug name)。你在后台编写文章的时候,可以自己定义文章的别名,如下图的黄色部分:

当然你可以在文章编辑页,点击某篇文章下的"快速编辑",那里也可以编辑别名:

现在有个问题,我怎样才能获取这个文章别名呢?WordPress中提供了<?php the_title(); ?>来获取文章标题,<?php the_permalink(); ?>用于获取当前文章的链接,但是并没有发现获取文章别名的函数。找不到相应的函数,我们可以自己写个函数,以下是已编写好的函数,你可以编辑你的主题目录中的functions.php,在 ?> 前面添加以下函数:
1 2 3 4 5 | function the_slug() { $post_data = get_post($post->ID, ARRAY_A); $slug = $post_data['post_name']; return $slug; } |
然后你就可以在你需要的地方调用该函数了:
1 | <?php echo the_slug(); ?> |
输出结果为当前文章的别名,如本文的为 wordpress-post-slug-and-page-slug-function
如果你用的别名是中文,那么调用出来的将会是一堆乱码,因为WordPress对中文的别名进行了编码,在数据库中存储的不是中文。
参考文章:
本文版权归露兜博客所有,转载引用请完整注明以下信息:
本文作者:Ludou
本文标题:WordPress获取当前文章别名
本文地址:http://www.ludou.org/wordpress-post-slug-and-page-slug-function.html
不好意思,本人愚笨,不是很懂什么意思。
是不是我想用标题作为文章的链接,但是如果用/%postname%.html就变成中文或者乱码了,用这个方法可以自动转还成wordpress-post-slug-and-page-slug-function这种英文形式?
不是!
本文只是教你如何获取文章的别名,至于你想怎么用就随你愿了,%postname%.html只是举个例子!
如果你的文章别名是中文,而且用%postname%.html这种固定链接形式,那么文章网址将会是中文(Firefox中),或者乱码(IE)
如果你想使用%postname%.html这种链接形式,且不想出现乱码情况,可以搜索自动将中文名称转成拼音的插件。
已将博客订阅,关注中!
谢谢关注!
WP中文论坛路过.
function the_slug() {
$post_data = get_post($post->ID, ARRAY_A);
$slug = $post_data['post_name'];
return $slug;
}
这个函数你测试过吗, $post是the loop中的全局变量, 在函数体内使用应该先 "global $post;"声明吧..
话说, 按照WP模板标签风格, the_xxx之类tag一般是直接输出值, get_the_xxx是返回值.
1、the_slug()是自定义的函数,不是WordPress内置函数,名称可以自己起个;
2、至于该函数到底是直接输出值,还是返回值,你可以自己做些更改,不必拘泥于WordPress标签风格
3、该函数我已经测试过,可以正常使用,在index.php的主循环中可以正常使用,在single.php中未加循环的情况下也可以正常使用;
4、$post在主循环外部仍然有效,不必添加全局变量声明,当然添加了也没有错
可以参考:
http://playworkplay.com/blog/wordpress-quicktips-getting-a-posts-id/
可以不用修改这些代码啊,个人使用方法是先用英文或拼音写标题,然后发布,这样英文链接就形成了,然后再编辑为你要的中文名称重新发布就好了。
本文只是教你如何获取文章的别名;
本文并不是教你如何设置英文链接。
看了半天 没看个明白
调用别名
数据库里没中文,
那只能调英文…
是的!数据库中不存防中文,如果别名是中文,WordPress会对其解码成%形式再存放,取出来的时候再解码,至于怎么解码,至今没研究出来。
他会自已译成英文?
不会!你自己填。
待你熟悉WordPress就知道了。
我搜索到这里就是为了一个,就是能不能文章别名和标签别名,中文自动转换成拼音或者英文
你可以尝试搜索关键字:wordpress 文章 别名 中文 拼音
不过显示出来会很长,楼主你自己也是手动的嘛?
是的
嗯,插件还是没有手动好!
不好意思,打扰下,我按照你的方法弄了一下,并且我的别名也是英文,但是调出来的确是乱码是怎么回事呢?
这种情况我没见过,你在自己找找原因。
你好,我想请教你一个问题,我想获取文章里第一个标签的别名,怎么实现。
先谢谢你。
代码:
<?php
$post_tags = wp_get_post_tags($post->ID);
if ($post_tags)
echo $post_tags[0]->slug;
?>
请问下 <?php echo the_slug(); ?>
这个应该添加到哪呢. . 不好意思.我是初学者
那你想添加在哪个页面,哪个地方?
你的就是直接替换固定链接那里.把中文的替换成了 拼音
如果你是想要这个功能,那么你来错地方了,我的固定连接是我自己写的英文,而不是拼音。
不是你可能误会了. . 这代码不是实现输出 文章别名吗 ? 需要手动改. .
在后台发布文章后,固定连接仍然是中文 … 所以那段代码是不是应该显示在后台?这样我该添加到哪个页面
http://www.ludou.org/create-wordpress-themes-template-hierarchy.html
你参考上面的说明,将这段代码放在主题的合适页面的合适位置就可以了!
另外,这段代码不会帮你自动将中文别名转换成拼音别名,如果你需要这样的功能,请选择下面任一插件:
http://www.williamlong.info/archives/1027.html
http://blog.2i2j.com/being-humble-opinion/wp-slug-for-wordpress-plugins.html