如何在短码中使用作者元?

时间:2013-03-01 作者:JPollock

我正在尝试创建一个短代码,该代码将返回到亚马逊上的一本书的链接,其中包含特定于作者的特定附属跟踪代码。我创建了一个名为“amz”的用户选项来保存作者的跟踪代码。当我在其他地方使用它时,效果很好。这是我创建的短代码:

function amazon_link_function($atts, $content = null) { extract(shortcode_atts(array( \'isbn\' => \' \', \'title\' => \' \' ), $atts));

  $amztrack = the_author_meta( \'amz\' );

  return \'<a href="http://www.amazon.com/exec/obidos/ASIN/\' .$isbn. \'/\' .$amztrack. \'" title="\' .$title. \'" target="_blank">\' .$title. \'</a>\';

} add_shortcode("amazon", "amazon_link_function");

isbn和title值正确返回,但存储在$amztrack变量中的跟踪代码在使用快捷码的段落之前显示为纯文本:(

我也在回程线上尝试了这个,得到了同样的结果:

  return \'<a href="http://www.amazon.com/exec/obidos/ASIN/\' .$isbn. \'/\' .the_author_meta( \'amz\' ). \'" title="\' .$title. \'" target="_blank">\' .$title. \'</a>\';

2 个回复
最合适的回答,由SO网友:fuxia 整理而成

the_author_meta() 立即打印内容。改用:

$amztrack = get_the_author_meta( \'amz\', FALSE );
这将返回值。

SO网友:Michael

短代码需要返回值,因此不能使用打印输出的函数,如the_author_meta();

使用get_the_author_meta() http://codex.wordpress.org/Function_Reference/get_the_author_meta

结束

相关推荐

Using shortcodes in PHP

我试图在我的页面中使用短代码,我从一个简单的测试开始。在里面functions.php:function HelloWorldShortcode() { return \'<p>Hello World!</p>\'; } add_shortcode(\'helloworld\', \'HelloWorldShortcode\'); 在中index.php:[helloworld] 这不会产生<p>Hello World