如何在不包含/需要wp_load或wp_config的情況下允許獨立頁面訪問WordPress功能?在獨立插件中訪問WordPress功能頁面
我正在開發一個插件,需要允許訪問獨立的PHP頁面上的WP數據庫。這個頁面是一個簡單的curl請求,它返回一個完整的HTML頁面來顯示。對於上下文來說,插件是來自API的作業列表,然後需要鏈接到完整的作業廣告(完整的HTML頁面)。
我目前擁有的代碼是這樣的(在jobad.php頁):
$root = dirname(dirname(dirname(dirname(dirname(__FILE__)))));
if (file_exists($root.'/wp-load.php')) {
require_once($root.'/wp-load.php');
}
這是我從每一個答案,拉着我對如何做到這一點找到的代碼。包括來自wordpress.org自己的論壇。從這個stackoverflow的答案,例如:Using WPDB in standalone script?
它工作正常,但當我試圖提交插件到WP目錄,該插件被拒絕包含wp_load.php這種方式。這是有道理的爲什麼不,但我找不到任何其他方式使文件在WordPress中工作。
結果我需要
從由簡碼生成的列表,每個項目都有一個鏈接,將返回一個完整的HTML頁面。這個HTML頁面作爲cURL響應返回 - 不是URL(或者我可以讓每個鏈接驅動一個iframe)。對於情況下,我建立了鏈接這樣
$job_ad_link = plugins_url('includes/jobad.php' , dirname(__FILE__));
$job_id = //id from database;
<a href="'.$job_ad_link.'?sgjobid='.$job_id.'">link</a>
因此呼籲jobad.php將運行正確JOB_ID捲曲功能和顯示捲曲響應。我可以運行cURL作爲AJAX並避免這個問題,但因爲它是一個完整的HTML頁面,所以我不能簡單地在一個div中返回cURL。在一個iframe是尷尬的,如果我不想使用它(並沒有嘗試成功)。
爲了清楚起見,從WordPress的響應:
包括WP-config.php文件,WP-博客 - 的header.php,WP-load.php,或幾乎任何其他的WordPress>核心文件,您必須通過include直接調用並不是一個好主意,我們不能>批准這樣做的插件,除非它有很好的理由來加載文件。它很容易失敗,因爲並非所有的WordPress安裝都具有完全相同的文件結構。
由於這是一個插件,我只是簡單地將它包含在主插件文件中,對嗎?我需要訪問的唯一東西是數據庫中的一個項目傳遞給cURL腳本。整個cURL腳本會在這裏,還是在單獨的PHP文件中?而且,如果有,那麼我如何在PHP文件中返回結果?對不起,還沒有看到兩者如何連接。 – robooneus
我已經改變了一下代碼並添加了一個實例URL來調用這個函數。該功能可以包含到您的郵件插件文件中。 – 2ndkauboy
謝謝,解釋和代碼確實有幫助。 – robooneus