WordPress获取当前文章别名

Ludou

     相信很多人在使用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

露兜博客博主,男生,业余Web程序员,儒家思想受益者。文采不佳,不喜欢聚光灯,不喜欢吹牛,不喜欢无序的做事方式。闲时喜欢写些代码自娱自乐,并在博客中分享一些个人技术经验。

标签:

27 条评论

我来说两句
  1. 西门

    不好意思,本人愚笨,不是很懂什么意思。

    是不是我想用标题作为文章的链接,但是如果用/%postname%.html就变成中文或者乱码了,用这个方法可以自动转还成wordpress-post-slug-and-page-slug-function这种英文形式?

    • Ludou

      不是!
      本文只是教你如何获取文章的别名,至于你想怎么用就随你愿了,%postname%.html只是举个例子!

      如果你的文章别名是中文,而且用%postname%.html这种固定链接形式,那么文章网址将会是中文(Firefox中),或者乱码(IE)

      如果你想使用%postname%.html这种链接形式,且不想出现乱码情况,可以搜索自动将中文名称转成拼音的插件。

  2. 滔滔乐

    已将博客订阅,关注中!

  3. cxy152376

    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是返回值.

    • Ludou

      1、the_slug()是自定义的函数,不是WordPress内置函数,名称可以自己起个;
      2、至于该函数到底是直接输出值,还是返回值,你可以自己做些更改,不必拘泥于WordPress标签风格
      3、该函数我已经测试过,可以正常使用,在index.php的主循环中可以正常使用,在single.php中未加循环的情况下也可以正常使用;
      4、$post在主循环外部仍然有效,不必添加全局变量声明,当然添加了也没有错

      可以参考:
      http://playworkplay.com/blog/wordpress-quicktips-getting-a-posts-id/

  4. 米修

    可以不用修改这些代码啊,个人使用方法是先用英文或拼音写标题,然后发布,这样英文链接就形成了,然后再编辑为你要的中文名称重新发布就好了。

  5. GO时尚网

    看了半天 没看个明白
    调用别名
    数据库里没中文,
    那只能调英文…

    • Ludou

      是的!数据库中不存防中文,如果别名是中文,WordPress会对其解码成%形式再存放,取出来的时候再解码,至于怎么解码,至今没研究出来。

  6. 武汉SEO

    他会自已译成英文?

  7. 假睫毛

    我搜索到这里就是为了一个,就是能不能文章别名和标签别名,中文自动转换成拼音或者英文

  8. 杜彬的博客

    不好意思,打扰下,我按照你的方法弄了一下,并且我的别名也是英文,但是调出来的确是乱码是怎么回事呢?

  9. 漠天

    你好,我想请教你一个问题,我想获取文章里第一个标签的别名,怎么实现。
    先谢谢你。

  10. fool

    请问下 <?php echo the_slug(); ?>
    这个应该添加到哪呢. . 不好意思.我是初学者

发表评论

因博主长期在外地出差,您的留言可能暂时不会得到回复。

订阅评论