短代码内容显示两次或位于页面底部

时间:2017-05-17 16:08:12

标签: php wordpress shortcode

我的短代码有问题,它应该出现在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(),那么表格将在后期div中显示两次,在页面底部显示一次

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

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

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

1 个答案:

答案 0 :(得分:1)

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

尝试使用此功能(注意第2行到最后一行):

        </tr>
    <?php

        endforeach;

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

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