是的,这是可行的。
我不知道如何在WP安装完成后立即运行脚本,但您可以通过一个必须使用的插件来实现您的想法。
首先,您可能需要某种方式来获取联系人页面id。这是一个帮助函数,
function get_my_contact_page_id() {
return get_option( \'my_contact_page\', 0 ); // custom option might be a logical place to store the id
}
然后选择您最喜欢的钩子,如果需要创建联系人页面,您将使用该钩子进行检查。例如,仅当主题更改时才运行检查。
function create_contact_page(){
if ( ! get_my_contact_page_id() ) {
$args = array(
\'post_type\' => \'page\',
\'post_status\' => \'publish\',
\'post_title\' => __( \'Contact\', \'textdomain\' ),
//\'post_name\' => \'contact\', // add this, if you want to force the page slug
);
$id = wp_insert_post( $args );
if ( $id ) {
add_option(\'my_contact_page\', $id); // custom option might be a logical place to store the id
}
}
}
add_action( \'after_switch_theme\', \'create_contact_page\' );
要从页面管理视图中排除该页面,请使用
pre_get_posts
.
function exclude_single_page_on_admin_page_list($query) {
if ( is_admin() ) {
global $pagenow;
if ( \'edit.php\' === $pagenow && \'page\' === $query->query[\'post_type\'] ) {
if ($contact_page = get_my_contact_page_id()) {
$query->set( \'post__not_in\', array( $contact_page ) );
}
}
}
}
add_action( \'pre_get_posts\', \'exclude_single_page_on_admin_page_list\' );
要防止任何人直接访问联系人页面编辑视图,请添加重定向保护。
function prevent_excluded_page_editing() {
global $pagenow;
if ( \'post.php\' === $pagenow && isset( $_GET[\'post\'] ) && $_GET[\'post\'] == get_my_contact_page_id() ) {
wp_redirect( admin_url( \'/edit.php?post_type=page\' ) );
exit;
}
}
add_action( \'admin_init\', \'prevent_excluded_page_editing\' );