如何在wordpress中更改自定义模板的默认父页面?

时间:2018-07-27 10:07:42

标签: wordpress templates parent-child default parent

输入数据:
该网站仅包含页面,没有帖子。
所有页面都是通过单个模板创建的。
将来只有一个模板可用于添加新页面。
现在,此模板写在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' );

点击“添加新”:
click on the "Add New"

现在喜欢:
like now

在不使用此下拉菜单的情况下应该如何:
how should it become without using this drop-down menu

2 个答案:

答案 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数组中。 但是我认为有人可以提供更优雅的解决方案。