在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');
短代码必须引用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');
我如何在帖子中使用这个短代码(我认为我错误地使用了短代码):
修改编辑 这就是我称之为动态周年纪念帖子的方式:
<?php echo get_posts(array( 'category_name' => 'Anniversary' ))[0]->post_content ;?>
答案 0 :(得分:1)
阅读您发布的代码,我发现了三个问题。
短代码回调的第一个参数应该是属性数组,而不是单个字符串。命名参数__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