WordPress快捷方式必须
返回
数据(而不是使用
echo
或类似的)。
从
documentation
:
注意,shortcode调用的函数不应该产生任何类型的输出。
shortcode函数应该返回文本
这将被用来代替这个缺点。
直接产生输出将导致意外的结果。
这与筛选函数的行为方式类似,因为它们不应该从调用中产生预期的副作用,因为您无法控制从何时何地调用它们。
事实上,你的代码只在一个网站上被破解,而不是全部,我认为这是运气使然。
使用
return
而不是倍数
回声
打电话,可以解决你的问题:
function custom_category_loop()
{
// String to return
$html = '';
// Grab all the categories from the database that have posts.
$categories = get_terms( 'category', 'orderby=name&order=ASC');
// Loop through categories
foreach ( $categories as $category )
{
// Display category name
$html .= '<h2 class="post-title">' . $category->name . '</h2>';
$html .= '<div class="post-list">';
// WP_Query arguments
$args = array(
'cat' => $category->term_id,
'orderby' => 'term_order',
);
// The Query
$query = new WP_Query( $args );
// The Loop
if ( $query->have_posts() )
{
while ( $query->have_posts() )
{
$query->the_post();
$html .= '<div><a href="' . get_permalink() . '">' . get_the_title() . '</a></div>';
} // End while
} // End if
$html .= '</div>';
// Restore original Post Data
wp_reset_postdata();
// Return the HTML string to be shown on screen
return $html;
} // End foreach
}
add_shortcode( 'my_posts_grouped', 'custom_category_loop' );