簡體   English   中英

從外部服務器訪問Wordpress DB對象(wpdb)

[英]Accessing wordpress DB object (wpdb) from an external server

提前為菜鳥問題感到抱歉。

我搜尋了Google和StackOverflow,並找到了許多方法來訪問位於同一台服務器上的php頁面上的wpdb,但是似乎沒人能從完全不同的服務器上調用它。

我正在嘗試在Piwik中創建一個插件,以查詢我們的多站點WP DB(與Piwik托管在單獨的服務器上)以獲取帖子總數。 當您使用wpdb類(例如$ wpdb-> get_results)時,該查詢很容易...但是如果您嘗試運行直接SQL查詢,則不是那么容易,因為您必須對60多個表進行計數,因此,我希望使用wpdb來獲取所有有用的功能。

話雖這么說,使用require_once( 'http://www.example.com/wordpress/wp-load.php' ); 如果您設置allow_url_include=1則(非常困難 )訪問wpdb對象不是很安全。 還有另一種解決方法嗎?

使用require_once( 'http://www.example.com/wordpress/wp-load.php' ); 即使您allow_url_include也無法從外部位置工作。 您的服務器仍然解析php文件並發送解析​​后的php,最終將其完全空白。

您需要做的是創建一個API。 您可能想要創建一個Wordpress插件,該插件創建一個新的URL,Piwik可以查詢該URL以獲取結果。

WordPress服務器上的超級簡單api可能如下所示:

/api.php

<?php

// TODO add authentication, probably token-based
// TODO move this to a WP plugin

include ('wp-load.php');

// Get count of published posts
$count = array(
    'count' => wp_count_posts()->publish
);

echo json_encode($count);

PIWIK網站

<?php

$data = json_decode(file_get_contents('http://www.example.com/wordpress/api.php'));

echo $data->count;
// Result: number of published posts

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM