2011-01-09 106 views
0

我敢肯定這是一個簡單的問題。但是,如何在啓動時獲得Wordpress,以忽略嘗試加載頁面或帖子,而是加載我的自定義頁面?當在WordPress的引導過程中,它決定哪個php頁面將加載?WordPress的包括自定義頁面

我將有以下網址:

bt.local/WP /廣告/ 1

,想一個PHP頁面調用ads.php將承載和的AdID = 1加載廣告。

解決此問題的最佳方法是什麼? (沒有稱爲廣告的帖子,也沒有稱爲廣告的頁面)。

謝謝!

KR

約瑟夫

回答

0

您可以使用該template_redirect行動 - 例如:

add_action('template_redirect', 'my_template_loader'); 


function my_template_loader() { 
    if(get_query_var('adid')) { 
     locate_template(array("your-custom-page.php"), true); 
    } 
} 

編輯:

除了你需要一些新的重寫規則添加自定義URL - 基本信息是這裏http://codex.wordpress.org/Function_Reference/WP_Rewrite

您的規則可能看起來類似的東西:

$newrules['ads/(\d*)$'] = 'index.php?pagename=ads&adid=$matches[1]'; 

這需要一個「佔位符」頁面調用的廣告是建立和除了你必須註冊新的查詢變種adid這樣的:

add_filter('query_vars', 'add_adid_var'); 
function parameter_queryvars($qvars) { 
    $qvars[] = ' adid'; 
    return $qvars; 
} 
+0

工程就像一個魅力!我使用全局$ wp_query而不是$ post來提取頁面名稱:$ wp_query-> get('pagename')。然後我找到了模板並加載了我的自定義ads/index.php文件。非常感謝你! – Josef

+0

只是注意到我的$ wp_query在將URL添加到URL時不起作用。例如bt.local/wp/ads/1 - 1破壞了它。如果我建議使用$ post,則無法在任何地方找到頁面名稱「ads」。我怎麼做? – Josef

+0

添加了一些關於重寫和查詢變量的信息 – roman

0

<?php include('custompage.php'); ?> ???

+0

謝謝您的回答。但問題更多地涉及到處理變量和wordpress進程頁面加載的方式。例如 - 如果我在WP Admin中創建了一個名爲About的頁面,那麼在輸入URL/WP/About時會看到About頁面。但是如果我有一個自定義頁面,我想在輸入URL/WP/Add時被調用,我該如何讓Wordpress找到那個?如果我輸入一個不是在Wordpress中創建的頁面,它會說「找不到頁面」。我希望它能澄清我的問題。 祝你有個愉快的夜晚! – Josef

+0

如果它存在於wordpress正在查找的目錄中,它將顯示出來,甚至不是用wordpress創建的。 – tekknolagi