简码内容显示两次或显示在页面底部

shortcode content is showed twice or at the bottom of the page

我的短代码有问题,它应该出现在 post div 中,但它显示在页面内容的末尾(页面底部)。 这是代码:

add_shortcode('registru', "show_registru");

function show_registru()
{
    global $wpdb;

    $list_inregistrari = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'wprc_ong_casa ORDER BY data_inregistrare ASC');
    $sold_init = $wpdb->get_var('SELECT valoare FROM ' . $wpdb->prefix . 'wprc_solduri LIMIT 1');

    ob_start();
    print_table($list_inregistrari, $sold_init);
    return ob_get_clean();
}

如果我尝试使用 ob_get_content() 而不是 ob_get_clean() table 将显示两次,一次在 post div 一次在页面底部。

我也试过这样做(它仍然在页面底部):

ob_start();
print_table($list_inregistrari, $sold_init);
$return = ob_get_contents();
ob_clean();
return $return;

*print_table函数只是回显了一些HTML代码,所以我也尝试将所有带有HTML代码的字符串放入一个变量,然后 return 它,但仍然没有。

知道了!所以问题是 print_table 中的元素缺少结束 </table> 标记。

为你的函数试试这个(注意倒数第二行):

        </tr>
    <?php

        endforeach;

        front_table_footer($total_incasari, $total_plati, $sold_init);

        echo '</table>'; // needs a closing tag
}