Wordpress自定义永久链接短代码

时间:2015-11-14 16:18:27

标签: php wordpress

在Wordpress网站上工作,我需要有一个包含php内容的帖子。 我发现这只能通过functions.php

中的插件或短代码来实现

用Google搜索,尝试了很多,但它没有运作,所以我肯定做错了。

我在functions.php中的代码:

function anniversary_link($text) {
        $url = the_permalink();
        return "<a href='$url'>$text</a>";
}
add_shortcode('permalink', 'anniversary_link');

我的帖子: enter image description here

以及点击链接时得到的结果: enter image description here

短代码必须引用single.php页面,而静态代码对single.php页面的引用只是:

<?php the_permalink() ;?>

这是不是正确的&#39;在帖子上使用href的方法(是否有更好/更清洁的方法来实现这一点)?

修改

感谢nathan 修改编辑:在functions.php

中更新了我的代码
function anniversary_link( $atts ) {
    $atts = shortcode_atts( array(
        'text' => '',
    ), $atts, 'permalink' );

    $url = get_permalink();
    return '<a href="' . $url . '">' . $atts['text'] . '</a>';
}
add_shortcode('permalink', 'anniversary_link');

我如何在帖子中使用这个短代码(我认为我错误地使用了短代码): enter image description here

结果: enter image description here

修改编辑 这就是我称之为动态周年纪念帖子的方式:

    <?php echo get_posts(array( 'category_name' => 'Anniversary' ))[0]->post_content ;?>

(标题内) enter image description here

解决方案感谢nathan enter image description here

1 个答案:

答案 0 :(得分:1)

阅读您发布的代码,我发现了三个问题。

  1. 您访问“text”属性的方式。
  2. 您用来获取固定链接的功能。
  3. 您将短代码插入内容的方式。
  4. 短代码属性

    短代码回调的第一个参数应该是属性数组,而不是单个字符串。命名参数__init__.py与值无关,也不会提取短代码的text属性。

    将参数名称从$text更改为$text,并为文本属性设置默认值。使用短代码设置默认值是一种很好的做法,可以使用$atts函数完成。

    返回与输出函数

    第二个问题是您使用shortcode_atts()the_permalink()不会返回固定链接,而是直接输出。因此,您无法将其分配给变量。

    新功能

    the_permalink()

    用法

    在您的代码中,您使用链接的function anniversary_link( $atts ) { // Set defaults where needed $atts = shortcode_atts( array( 'text' => '', ), $atts, 'permalink' ); // Replace the_permalink(). // Given the level of simplicity it doesn't need it's own variable. $url = get_permalink(); // Put together a new return statement. // Various ways this could be formatted. I went with something clear and easy to understand. return '<a href="' . $url . '">' . $atts['text'] . '</a>'; } 属性中的短代码。短代码会返回完整链接,而不是网址,因此不应该在另一个href标记内。

    示例:

    a