2012-09-13 69 views
0

我正在使用自定義短代碼插件。該插件允許我運行一些PHP。 PHP查詢一個非wp數據庫來構建一個車輛規格頁面,一切都很好。問題是頁面標題和描述所需的所有信息都包含在來自數據庫的數據中。我試過一些標準的WP過濾器,但標題不會改變。WordPress的 - 動態更改頁面,但在短代碼運行php

這是不是因爲短碼的執行時間?

TinyMCE in WP admin. Shortcode 
----------------------------------------------- 
[myplugin data_id='42'] 

PHP window in shortcode editor 
----------------------------------------------- 
$GP=array_merge($_GET, $_POST); 

echo "hello word" //works 
echo $data_id; //works 
echo $GP[some_post_data]; //works 
//connect to database (irrelevant) 
echo "the title from data table for data_id 42 = ".$data[title]; //works 

// the following has no effect on page title even though $data[title] contains valid data 
add_filter('the_title','myCallback'); 
function myCallback($data){ 
    return $data[title]; 
    } 

回答

0

問題是$ data [標題]超出了範圍,並且您的過濾器回調設置不正確。另外,你應該用引號封裝關聯索引。

向現有過濾器添加回調時,回調內的參數由過濾器定義傳遞。案例和要點:Filtering The Title

the_title標準過濾器中的參數是$ title和$ id。如果你想從你的$ data數組返回標題,您可以使用全球範圍內做到這一點馬虎方式:

add_filter('the_title','myCallback'); 
function myCallback($title, $id){ 
    global $data; 
    return $data['title']; 
} 

不過,我個人會考慮避免全局完全集中精力利用自定義過濾器。看看Adding Your Own Hooks。在處理動作鉤子後,Filter Hooks很容易掌握。

+0

測試您的代碼後,頁面標題仍然沒有改變。看起來好像header.php已經在我的插件執行之前就已經執行了,所以沒有任何事情可以工作。我想我會辭去連接到我的外部數據庫在header.php,所以我可以儘早與wordpress函數進行交互。 – chrisrth