WordPress自动和永久页面

时间:2019-10-06 作者:BOZ

WordPress安装完成后,我需要一个页面,如“localhost/contact“自动发生并使其永久化。简而言之,它不能在面板中编辑和删除。它甚至应该在面板上不可见。但就像WordPress应该在普通ID系统中占有一席之地一样。

这在技术上可行吗?

1 个回复
最合适的回答,由SO网友:Antti Koskinen 整理而成

是的,这是可行的。

我不知道如何在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\' );

相关推荐

Pages from custom table

我在wordpress数据库中有自定义表“catalog”:id|name|description|slug|price 我有模板文件“catalog”和页面“catalog”,其中显示了目录表中的所有项目。但是,如何将此列表中的单个项目显示为页面?领域开发/目录/(此部件工作)域。dev/catalog/my single item页面(我不知道如何使其工作)如何使用“我的单个项目页面”作为动态变量?slug=“我的单个项目页面”;我的函数中有这个片段。php文件 function ad