我创建了一个自定义短代码并可以输出信息,但它没有显示我将其放在内容层次结构中的位置 - 它始终打印在帖子/页面的顶部。关于为什么会发生这种情况的任何线索?
在我的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");
答案 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。
您可以在适当的位置获取数据。