我繼承了一個Wordpress插件,可在編輯頁面和/或帖子時使自定義字段可用。它爲網頁添加了略微不同於內容的內容。該插件決定頁面或交下列要求:確定我是否在Wordpress中編輯頁面或帖子
if(preg_match('|post.php|i', $_SERVER['SCRIPT_NAME']) || preg_match('|post-new.php|i', $_SERVER['SCRIPT_NAME'])) {
add_meta_box('qaws_' . $cg ,$group, 'qaws_admin_meta', 'post', 'advanced', 'core');
} elseif(preg_match('|page.php|i', $_SERVER['SCRIPT_NAME']) || preg_match('|page-new.php|i', $_SERVER['SCRIPT_NAME'])) {
add_meta_box('qaws_' . $cg ,$group, 'qaws_admin_meta', 'page', 'advanced', 'core');
}
這在舊版本的WordPress的,因爲他們在URL編輯頁面時,編輯帖子和page.php文件時使用post.php中工作得很好。但是,現在,Wordpress不會這樣做。帖子和頁面都使用如下所示的URL進行編輯:post.php?post=4&action=edit
因此URL中唯一可能的標識符是帖子編號。
那麼,如何確定我是否正在編輯頁面或文章?有沒有一個WordPress的功能,可以告訴我這個?是唯一的選擇來抓住郵政編號,並以某種方式檢查它,看看它是什麼?
你會如何處理這個問題?
編輯: 這裏是我做過什麼...... ,而不是做的preg_match我檢索了全球的$ id,用於get_all_page_ids()
讓所有的頁面的列表,並匹配$ id來get_all數組中的ID。如果匹配,則執行頁面add_meta_box,如果不是,則執行後一個。
我也移動檢查出一個循環,它是在一個循環中保存了一堆準時渲染頁面。現在我在開始和循環中設置一個標誌,渲染這些meta_boxes只是檢查標誌是否設置。
感謝您的回覆。這是一個很好的答案!唯一的問題是,如果我正在創建一個新頁面或帖子,那麼我沒有一個頁面或帖子ID來測試。但是,我已經在使用:preg_match('| post_type = page | i',$ _SERVER ['QUERY_STRING'])來處理這個問題,所以我可以使用你在preg match中建議的函數,並且仍然很好。謝謝! – Lothar 2010-11-03 23:58:34