wordpress:更改页面模板

时间:2014-04-01 18:05:18

标签: php mysql wordpress

通常要更改wordpress中的页面模板,我只需要在编辑特定页面时登录CMS并从下拉菜单中选择页面模板。

我的问题是我有~100页并且逐个手动更改页面将会很麻烦。有没有办法直接进入数据库并执行一些mysql查询来更改所有页面模板以说“新闻模板”而不是“公告模板”

我制作了一个名为news.php的模板,在里面我添加了..

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

2 个答案:

答案 0 :(得分:0)

如果您需要将所有页面更改为另一个模板,您可以通过将其添加到functions.php来使Wordpress完成工作

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' );

然后删除代码,当您确认它正在工作时 这将检查每个页面的当前模板数据 - 如果它不是&#34; news.php&#34;,它将更改它。

请注意,这会挂钩到“管理”面板 - 为了避免访问者在每个页面加载时运行这些查询 只需前往WP-Admin一次 - 确认已完成 - 删除代码。

答案 1 :(得分:0)

在阅读了Wordpress Codex之后,这就是我想出的内容(我基本上是对Frederick的答案进行了调整,因为它不适用于我)

<?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个最新的新闻,它是我创建的所有新闻页面的父级。

所以,我基本上接受了新闻的所有子页面并更改了为其分配了新模板。