我正在尝试创建一个 Wordpress 插件,它将我创建的 PHP/HTML 文件嵌入到带有网站页眉/页脚的帖子中。
我尝试使用常规 iFrame,以及嵌入它的插件 Advanced iFrame,它可以工作并包含目录的 javascript/CSS 文件。但是,每当页面调整大小(UI 元素滑入和滑出)时,iframe 和 Advanced iFrame 并不总是能正确处理它。
然后我研究了创建一个插件简码,这就是我到目前为止所拥有的:
<?php
/*
Plugin Name: Calculator
Plugin URI:
Description: Calculator
Version: 1.0
Author: Andrew
*/
add_shortcode("calculator", "create");
function create() {
include(plugin_dir_path(__FILE__).'calculator.php');
}
?>
在页面本身中,我包含了[calculator]
简码。当我加载页面时,它会加载标题,但是下面的所有内容(通常会生成短代码)都是一个空白页面。甚至不包括页脚。
这是插件文件夹的结构:
calculator/
plugin.php //What is shown above
calculator.php //Contains HTML UI and PHP code
calculator.js //Contains UI functions
calculator_style.css //CSS referenced relatively in calculator.php
fonts/
//various fonts for calculator_style.css
js/
jquery-1.9.0.min.js //jQuery referenced relatively in calculator.php
//Other various JS files for calculator.php
fpdf/
fpdf.php //FPDF, used to create a PDF printout in calculator.php
fonts/
//various fonts for FPDF
我对 Wordpress 插件不是很熟悉,但我希望calculator.php 嵌入到帖子中,并且仍然能够正确引用它的 CSS/JS 文件。
我还希望不必重新编写calculator.php 文件来使用Wordpress PHP 函数来引用插件文件夹中的本地文件。
这可以使用简码吗?或者是否有另一种/更好的方式在 Wordpress 帖子中嵌入目录/PHP 文件?
编辑:更多信息,这就是calculator.php 的样子。
<?php
require './fpdf/fpdf.php';
$jsonData = json_decode($_POST['data'], true);
if ($jsonData != NULL) {
//Create PDF and return if the page is given POST data
}
?>
<form id="pdfSave" action="" method="POST" enctype="multipart/form-data">
<div><input id="name" class="boxField" type="text"></div>
<div><input id="company" class="boxField" type="text"></div>
<div><input id="phone" class="boxField" type="text"></div>
<div><input id="email" class="boxField" type="text"></div>
<div><input id="logo" name="final-logo" class="boxField" type="file"></div>
</form>
<button id="loanInfoSettings" class="boxButtonBack" onclick="saveForm();">Save</button>
//Other HTML calculator-UI stuff
所以本质上,当用户第一次加载页面时,没有发送任何 POST 数据,因此显示了 HTML 计算器,其中包括各种功能和一个表单。用户完成后,单击保存按钮,该按钮调用同一页面并向其发送 POST 数据。这一次,当页面加载 POST 数据时,将生成 PDF 而不是显示 HTML。
所以我需要一种方法来包含calculator.php,当加载Wordpress帖子时,会显示HTML计算器和表单,当通过JavaScript提交表单时,帖子或只是嵌入的calculator.php会被刷新POST 数据和生成的 PDF。
编辑2:我试过这个来显示它:
static function handle_shortcode($atts) {;
self::$add_script = true;
wp_enqueue_style('calculatorstyle');
// actual shortcode handling here
include(plugins_url( 'netsheet.php', __FILE__ ));
}
我还读到输出缓冲区应该用于输出 PHP 文件,所以我尝试了
static function handle_shortcode($atts) {;
self::$add_script = true;
wp_enqueue_style('calculatorstyle');
ob_start();
include(plugins_url( 'netsheet.php', __FILE__ ));
return ob_get_clean();
}
编辑3:只是做包括:
static function handle_shortcode($atts) {;
self::$add_script = true;
wp_enqueue_style('calculatorstyle');
// actual shortcode handling here
include 'netsheet.php';
}
导致页面在到达短代码时停止渲染,从而产生一个页眉,然后是一个没有页脚的空白区域。