输入数据:
该网站仅包含页面,没有帖子。
所有页面都是通过单个模板创建的。
将来只有一个模板可用于添加新页面。
现在,此模板写在page.php中,这将是默认模板。 (可以在不触摸page.php的情况下进行重定向,
但这是该项目的额外代码)
所有这些新页面都应成为该页面的子页面(例如使用id = 77
)。
客户端每次可以在下拉列表中手动选择父页面“名称” c id = 77
。
但这是不必要的操作,如果忘记了这一点,将来结构会出现问题。
当您点击“添加新”时,应该会自动选择父页面
可能需要将代码添加到function.php,看起来可能像这样:
function change_default_parent_page() {
if(is_page_template('page.php')){
global $post_parent = '77';
}
}
add_action( 'after_setup_theme', 'change_default_parent_page' );
答案 0 :(得分:1)
有一个简单的代码可以做到这一点。 只需将以下代码添加到主题的functions.php
add_filter( 'wp_insert_post_data', 'set_parnt_page_dynamically' );
function set_parnt_page_dynamically( $data )
{
if ($data['post_type'] == 'page' )
$data['post_parent'] = 77;
return $data;
}
77进入我的代码是父页面ID,您可以更改它。 现在,当用户创建一个新页面并单击“发布”按钮时,父页面将自动设置。 尝试代码,然后让我知道结果,谢谢
答案 1 :(得分:0)
经过几天的搜索,我没有找到使用模板名称的解决方案 (我认为这是最正确的。)
一个适合我的变体-每个新页面都是我需要的父代的子代,因此我在创建页面时使用了页面的状态。 因此,该任务得以执行,带有其他模板的页面不会更改其父级。
add_filter( 'wp_insert_post_data', 'set_parent_page_for_new_posts' );
function set_parent_page_for_new_posts( $data )
{
if ($data['post_status'] == 'auto-draft' )
$data['post_parent'] = 77;
return $data;
}
感谢Souvik Sikdar提供了附加到wp_insert_post_data并使用数组$data
的提示,很遗憾开发人员没有将$templates_name
添加到$data
数组中。
但是我认为有人可以提供更优雅的解决方案。