使用 WordPress 作为一个 CMS 发布内容的时候,我们往往会给页面设置模板,以适应不同的内容,如果是属于一个栏目的内容,这个栏目的模板往往是一样的,默认情况下,我们需要给这个栏目的每个页面设置一个模板。这样做是很麻烦的,如果一个栏目的子页面非常多,要多点好多下鼠标。有没有办法偷一下懒,设置一下父页面的模板,然后子页面就自动应用了这些模板呢?
办法当然是有的,通过函数判断一个页面是否有父页面,如果有,设置一下父页面的模板为此页面的模板就可以了。
设置父页面的模板为子页面模板
function wizhi_use_parent_template() {
global $post;
$curr_tmp = get_post_meta($post->ID, '_wp_page_template', true); //获取页面模板
if($post->post_parent){
$parent_tmp = get_post_meta($post->post_parent, '_wp_page_template', true); //如果有父页面,获取父页面模板
update_post_meta($post->ID, '_wp_page_template', $parent_tmp, $curr_tmp); //设置子页面的模板为父页面的模板
}
}
add_action('save_post','wizhi_use_parent_template');
此方法可能存在的问题
这种方法简单了很多,但是如果我需要为某个子页面单独设置一个模板的时候,就会出问题了,不管怎么设置,只要一保存文章,子页面模板就会自动设置为父页面的模板。
这个问题有没有办法解决呢?当然是有的,我们需要先判断一下子页面是否设置了模板,如果设置了模板,就使用当前的模板,如果没有设置,就自动使用父页面的模板。具体代码就留给智慧的网友们自己动手吧。