通常要更改wordpress中的页面模板,我只需要在编辑特定页面时登录CMS并从下拉菜单中选择页面模板。
我的问题是我有~100页并且逐个手动更改页面将会很麻烦。有没有办法直接进入数据库并执行一些mysql查询来更改所有页面模板以说“新闻模板”而不是“公告模板”
我制作了一个名为news.php的模板,在里面我添加了..
<?php
/*
Template Name: News Template
*/
?>
答案 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个最新的新闻,它是我创建的所有新闻页面的父级。
所以,我基本上接受了新闻的所有子页面并更改了为其分配了新模板。