自定义短代码始终显示在内容的顶部

时间:2012-04-17 09:27:50

标签: php wordpress function shortcode

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

在我的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");

3 个答案:

答案 0 :(得分:3)

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

您应该使用get_field代替the_field,因为the_field将输出指定的字段。

function sc_pdf($atts, $content = null) {
   $pdfname = get_field('pdf_title');
   ... etc

答案 1 :(得分: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');

答案 2 :(得分:2)

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

您可以在适当的位置获取数据。