【发布时间】:2020-11-03 22:51:57
【问题描述】:
我正在尝试创建一个用于 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.php 包含我的 160 行 HTML 和 PHP。 TEMPLATE_DIR 在 wp-config 中设置并且可以正常工作 - 至少(在几次失误之后)我没有收到“丢失文件”错误。
imported_table.php 文件有点长,放在这里,但本质上是这样的:
<Some HTML>
<?php
?>
<Some HTML with <?php >>
<?php
?>
<closing HTML>
其中包含大量 HTML 和嵌套的 PHP。如果我在 WordPress 的 PHP 插件中使用该代码,该代码可以自行运行,但该插件已被证明存在漏洞和自身的错误,这就是我尝试在短代码中使用该代码的原因。
【问题讨论】:
-
是否打开了错误消息?默认情况下,Wordpress 将其关闭。还要检查 php ini 是否允许在您的服务器上使用 file_get_content。一些服务器禁用它,因为它可能存在安全风险。那么你最好使用
curl。 -
file_get_content 在我的 PHP 信息中没有任何条目...这是否意味着它已被禁用或者我应该寻找其他东西?编辑:打开调试,它在该页面上没有错误。
-
函数
file_get_contents()只是获取文件的内容。结果你变成了一个没有功能的字符串。如果您希望执行您的模板,请尝试使用 wordpress 函数 load_template 或直接在您的 wordpress 函数中要求您的模板。
标签: php wordpress elementor wordpress-shortcode