我有一个查询,我想在短代码函数中包装,所以我可以在帖子或页面中调用它。它应该拉4个帖子如下。 trim_title()
是另一个自定义函数,它将标题限制为特定字符数。我已经验证了查询(带循环)在我将其直接插入到php模板时有效,但我希望能够将它作为短代码包含在编辑器中。
这就是我现在所拥有的:
function homepage_newsfeed($atts) {
$args = array( 'post_type' => 'post', 'posts_per_page' => 4 );
$wp_query = new WP_Query($args);
echo '<a href="';
the_permalink();
echo '">';
trim_title();
echo '</a>';
echo '<div class="newspostdate">';
the_time('F j, Y');
echo '</div>';
endif;
endwhile;
}
add_shortcode ( 'newsfeed', 'homepage_newsfeed');
这是在循环内。我也尝试在函数中包含循环:
function homepage_newsfeed($atts) {
$args = array( 'post_type' => 'post', 'posts_per_page' => 4 );
$wp_query = new WP_Query($args);
if ( have_posts() ) : while ( have_posts() ) : the_post();
echo '<a href="';
the_permalink();
echo '">';
trim_title();
echo '</a>';
echo '<div class="newspostdate">';
the_time('F j, Y');
echo '</div>';
endwhile;
endif;
}
add_shortcode ( 'newsfeed', 'homepage_newsfeed');
我也尝试过使用return而不是echo:
function homepage_newsfeed($atts) {
$args = array( 'post_type' => 'post', 'posts_per_page' => 4 );
$wp_query = new WP_Query($args);
if ( have_posts() ) : while ( have_posts() ) : the_post();
return '<a href="';
the_permalink();
return '">';
trim_title();
return '</a>';
return '<div class="newspostdate">';
the_time('F j, Y');
return '</div>';
endwhile;
endif;
}
add_shortcode ( 'newsfeed', 'homepage_newsfeed');
这些只是我和其他许多人的一些尝试。我已经做了很多搜索,看看如何在短代码中执行php,但我的大多数搜索结果都找到了使用do_shortcode(
引用的文章来使用PHP中的短代码。我感谢任何指导我正确方向的帮助。
答案 0 :(得分:1)
return
返回您需要的值,但也会退出该函数。
同样在WP中,你有一个get_
辅助函数的前缀版本,它也会返回一个值而不是直接回显它。
所以你可能想要尝试的是:
function myfunction(){
$string = 'lets';
$string .= ' build some string ';
$string .= get_the_permalink();
return $string;
}