WordPress自定义主题激活自动生成页面时如何设置自定义slug?
完整可直接使用的修改后代码
<?php declare(strict_types=1); // 新增第三个参数接收自定义slug function your_theme_create_page($page_title, $page_content, $custom_slug = '') { $page_obj = get_page_by_title($page_title, 'OBJECT', 'page'); if ($page_obj) { return false; exit(); } // 处理slug逻辑:传入自定义slug就优先使用,未传入则沿用原有自动生成逻辑 $post_slug = !empty($custom_slug) ? strtolower(trim($custom_slug)) : strtolower(trim($page_title)); $page_args = array( 'post_type' => 'page', 'post_status' => 'publish', 'post_title' => ucwords($page_title), 'post_name' => $post_slug, 'post_content' => $page_content, ); $page_id = wp_insert_post($page_args); return $page_id; } // 主题激活触发钩子 add_action('after_switch_theme', 'my_custom_pages_on_theme_activation'); function my_custom_pages_on_theme_activation() { // 调整数组结构,每个页面可单独配置内容、自定义slug $pages_array = array( 'Home' => [ 'content' => '', 'slug' => 'home' ], 'News' => [ 'content' => '', 'slug' => 'news' ], 'Products' => [ 'content' => '', 'slug' => 'products' ], 'Policy' => [ 'content' => '', 'slug' => 'policy' ], 'Services' => [ 'content' => '', 'slug' => 'services' ], 'Tool Brands' => [ 'content' => '', 'slug' => 'brands' // 需自定义其他slug直接修改此处值即可 ], ); foreach ($pages_array as $page_title => $page_config) { // 传入对应配置参数 $current_page = your_theme_create_page($page_title, $page_config['content'], $page_config['slug']); if (false != $current_page) { add_action('admin_notices', function () use ($page_title) { ?> <div class="notice notice-success is-dismissible"> <p><?php echo "操作完成!{$page_title} 页面已成功创建"; ?></p> </div> <?php }); } else { add_action('admin_notices', function () use ($page_title) { ?> <div class="notice notice-warning is-dismissible"> <p><?php echo "{$page_title} 页面未创建,请检查是否已存在同名页面"; ?></p> </div> <?php }); } } $blog_page = get_page_by_title('news', 'OBJECT', 'page'); if ($blog_page) { update_option('page_for_posts', $blog_page->ID); } $front_home_page = get_page_by_title('home', 'OBJECT', 'page'); if ($front_home_page) { update_option('page_on_front', $front_home_page->ID); update_option('show_on_front', 'page'); } }
修改说明
- 给页面创建函数新增了自定义slug参数,兼容原有逻辑,不传自定义值时会自动按页面标题生成slug
- 调整了页面配置数组结构,后续需要给其他页面自定义slug时,直接修改对应页面的
slug字段值即可,无需修改核心逻辑
内容的提问来源于stack exchange,提问作者ShrockCo
相关产品推荐
相关产品推荐

