我使用ACF 插件和我想把这个查询放在短代码中。但我有个问题。(not output anything)
add_shortcode(\'pishnahadi\' , \'kn_inline_related\');
global $post;
function kn_inline_related( $atts ) {
$html= \'\';
$posts = get_field(\'pishnahadi\', false, false);
$loop = new WP_Query(array(\'post_type\' => \'news\', \'posts_per_page\' => 3, \'post__in\' => $posts, \'post_status\' => \'publish\', \'orderby\' => \'post__in\', \'order\' => \'ASC\' ));
if($loop->have_posts()) {
$html .= \'<div class="rel-posts">\';
while ($loop->have_posts()) : $loop->the_post();
$html .= \'<div class="related-post">\';
$html .= \'<h3><a href="\' .the_permalink get_permalink() . \'">\' . the_title( \'\', \'\', false ) . \'</a></h3>\';
$html .= \'</div>\';
endwhile;
$html .= \'</div>\';
} wp_reset_query();
}
return $html;
}
更新:(以下代码正确且有效)
add_shortcode(\'pishnahadi\' , \'kn_inline_related\');
global $post;
function kn_inline_related( $atts ) {
$html= \'\';
$posts = get_field(\'pishnahadi\', false, false);
$loop = new WP_Query(array(\'post_type\' => \'news\', \'posts_per_page\' => 3, \'post__in\' => $posts, \'post_status\' => \'publish\', \'orderby\' => \'post__in\', \'order\' => \'ASC\' ));
if($loop->have_posts()) {
$html .= \'<div class="rel-posts">\';
while ($loop->have_posts()) : $loop->the_post();
$html .= \'<div class="related-post">\';
$html .= \'<h3><a href="\' . get_permalink() . \'">\' . the_title( \'\', \'\', false ) . \'</a></h3>\';
$html .= \'</div>\';
endwhile;
$html .= \'</div>\';
} wp_reset_query();
return $html;
}
最合适的回答,由SO网友:Sally CJ 整理而成
the_permalink()
echoes 输出,以及the_title()
默认情况下。所以你应该使用get_permalink()
和get_the_title()
:
$html .= \'<h3><a href="\' . get_permalink() . \'">\' . get_the_title() . \'</a></h3>\';
或使用
the_title()
使用第三个
parameter 设置为
false
要返回并不回显输出,请执行以下操作:
$html .= \'<h3><a href="\' . get_permalink() . \'">\' . the_title( \'\', \'\', false ) . \'</a></h3>\';
Update: 这个
return $html;
(在您原来未编辑的问题中)实际上超出了函数的范围,这将导致短代码不给您任何输出!因此,请确保它位于实际代码中的函数内。:)和用于辅助/自定义
WP_Query
实例,如
$loop
变量,只需调用
wp_reset_postdata()
而不是
wp_reset_query()
因为辅助查询不涉及(全局)
$wp_query
变量当然,除非在代码中修改了该变量。但你为什么要这么做。