1

我已经创建了一个自定义简码,并且可以获取要输出的信息,但是它没有显示在我将其放置在内容层次结构中的位置 - 它始终打印在帖子/页面的顶部。关于为什么会发生这种情况的任何线索?

在我的functions.php中:

function sc_pdf($atts, $content = null) {
   $pdfname = the_field('pdf_title');
   $pdfimage = the_field('pdf_file');
   $pdflink = the_field('pdf_thumbnail');
   return '<p>'.$pdfname.'</p><p>'.$pdfimage.'</p><p>'.$pdflink.'</p>';
}
add_shortcode("peedeef", "sc_pdf");
4

3 回答 3

3

由于您使用的是 the_field 方法,我假设您使用 ACF 插件。

您应该使用get_field而不是the_field因为the_field将输出指定的字段。

function sc_pdf($atts, $content = null) {
   $pdfname = get_field('pdf_title');
   ... etc
于 2012-04-17T10:01:07.783 回答
2

要移动您的简码,请不要使用 echo。 如果您在第一个示例中将短代码放在文档中,它将始终浮动到顶部。第二个如果我把它放在底部,它会出现在底部。

我的简码是 [showpod]

不能放在任何地方的代码

function makepod($atts) {
echo "<div class='podmysqlarray2 showpodholder'><h3 class='widget-title newposts'>Latest Snippets</h3>";
$args = array( 'numberposts' => '6' );
$recent_posts = wp_get_recent_posts( $args );
foreach( $recent_posts as $recent ){
echo '<div class="pod"><li><a href="' . get_permalink($recent["ID"]) . '" title="Look '.esc_attr($recent["post_title"]).'" >' .   $recent["post_title"].'</a> </li> </div>';
}
echo "</div>";
}
add_shortcode('showpod', 'makepod');

现在修改后的代码可以放在任何地方:-

function makepod($atts) {
$cat = "<div class='podmysqlarray2 showpodholder'><h3 class='widget-title newposts'>Latest Snippets</h3>";
$args = array( 'numberposts' => '6' );
$recent_posts = wp_get_recent_posts( $args );
foreach( $recent_posts as $recent ){
$cat.= '<div class="pod"><li><a href="' . get_permalink($recent["ID"]) . '" title="Look '.esc_attr($recent["post_title"]).'" >' .   $recent["post_title"].'</a> </li> </div>';
}
$cat .= "</div>";
return $cat;
}
add_shortcode('showpod', 'makepod');
于 2013-10-07T12:36:14.337 回答
2

始终使用“return”而不是 echo。

您将能够在适当的位置获取数据。

于 2015-02-25T10:18:16.083 回答