サイトのヘッダー/フッターを使用して、作成した PHP/HTML ファイルを投稿に埋め込む Wordpress プラグインを作成しようとしています。
通常の 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 データで読み込まれると、表示される HTML の代わりに PDF が生成されます。
そのため、Wordpress の投稿が読み込まれると HTML 計算機とフォームが表示され、フォームが JavaScript を介して送信されると、投稿または埋め込まれたcalculator.php が次のように更新される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';
}
ショートコードに到達するとページのレンダリングが停止し、ヘッダーが表示され、その後にフッターのない空白のスペースが続きます。