You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:54:05