2014-04-01 73 views
0

通常要在wordpress中更改頁面模板,我只需要登錄CMS並在編輯特定頁面時從下拉菜單中選擇頁面模板。wordpress:更改頁面模板

我的問題是我有~100頁,並手動更改一個頁面將是一個麻煩。有沒有辦法直接進入數據庫,並做一些MySQL查詢來更改所有頁面模板來說「新聞模板」,而不是「公告模板」

我做了一個名爲news.php的模板,已經添加了..

<?php 
    /* 
    Template Name: News Template 
    */ 
?> 

回答

0

WordPress的法典讀了之後,這裏就是我想出了(我基本tweeked弗雷德裏克的答案,因爲它不是爲我工作)

<?php 
    function temp_func_templates(){ 
    //Note: 26 is the page_id of News page 
    $args = array('child_of' => 26, 'depth' => 1); 
    $children = get_pages($args); 
    foreach($children as $page) { 
     $current_template = get_post_meta($page->ID, '_wp_page_template', true); 
     $new_template = 'news.php'; 


     if($current_template != $new_template && ($page->post_parent == '26')){ 
     update_post_meta($page->ID, '_wp_page_template', $new_template); 
     } 
    } 

    } 
    add_action('admin_init', 'temp_func_templates'); 

?> 

我有一個網頁,新聞在那裏它顯示了5個最新消息它是我創建的所有新聞頁面的父母。

所以,我基本上採取了新聞的所有孩子頁面,並改變分配一個新的模板。

0

如果您需要更改所有頁面到另一個模板,你可能藏漢讓WordPress的做工作,加入這一添加到functions.php

function temp_func_templates(){ 

    foreach(get_posts('post_type=page') as $page) { 
     $current_template = get_post_meta($page->ID, '_wp_page_template', true); 
     $new_template = 'news.php'; 

     if($current_template != $new_template) 
      update_post_meta($page->ID, '_wp_page_template', $new_template); 
    } 

} 
add_action('admin_init', 'temp_func_templates'); 

然後刪除代碼,當你確認它正在工作。
這將檢查每個頁面的當前模板數據 - 如果它不是「news.php」,它會改變它。

請注意,此掛鉤到管理控制檯 - 爲了避免訪問者每運行一次頁面載入運行這些查詢。
只需轉到WP-Admin一次 - 確認完成 - 刪除代碼。

+0

@Frederick,謝謝你的幫助。讓我們只是說我有其他模板適用於其他頁面。這不會覆蓋他們分配的模板嗎? 我想我會修改你的代碼的if語句,所以它不覆蓋它?我希望那些作品。 – alvinb

+0

是的。你可以添加一些if來排除你不需要的所有東西! –

+1

由於某種原因,它不適用於我,但是我在閱讀WP codex後能夠弄清楚它。這是一個小小的週報。再次感謝 – alvinb