在 PHP 函数中包装 PHP 和 HTML 以创建短代码

Wrapping PHP and HTML in PHP function to create a shortcode

我正在尝试创建一个用于 WordPress 的短代码,这将允许我使用 PHP 和 HTML 功能。

我已经创建了短代码,它使用简单的 echo Hello World 就可以工作,但是当我尝试用它来显示 160 行 PHP 和 HTML 的结果时,它什么也没显示,甚至没有错误。

尝试了几种不同的方法后,最简单的方法似乎是:

function imported_table( $atts ) {
    $var = file_get_contents(TEMPLATE_DIR . "/imported_table.php");
}
add_shortcode( 'imported_output', 'imported_table');

...其中 imported_table.phpcontains 我的 160 行 HTML 和 PHP。 TEMPLATE_DIR 在 wp-config 中设置并按其应有的方式工作 - 我没有得到 'missing file' 错误,至少(在几次失误之后)。

这里的 imported_table.php 文件比 post 有点长,但本质上是这样的:

<Some HTML>
<?php 
?>
<Some HTML with <?php >>
<?php 
?>
<closing HTML>

很多HTML和嵌套PHP。如果我在 WordPress 的 PHP 插件中使用该代码,它本身就可以工作,但该插件已被证明存在漏洞和自身的错误,这就是我尝试在短代码中使用该代码的原因.

你能试试这个吗?

不要使用 TEMPLATE_DIR 和 file_get_contents。

    function imported_table( $atts ) {
        ob_start();
        include(get_template_directory() . "/imported_table.php");
        $var = ob_get_contents();
        ob_end_clean();
        echo $var;
    }