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

WordPress页面创建代码更新:解决get_page_by_title()弃用问题

解决get_page_by_title()弃用提示并保留页面创建功能

主题安装后使用代码创建页面,功能正常,但Query Monitor插件提示get_page_by_title()函数已弃用。官方文档未解决该问题,自行修改代码后仍需调整以消除弃用提示,同时保留原有页面创建逻辑。

原代码

$check_page_exist = get_page_by_title('test', 'OBJECT', 'page'); 
if(empty($check_page_exist)) {
   $page_id = wp_insert_post(
       array(
           'comment_status' => 'close',          
           'ping_status'    => 'close',        
           'post_author'    => 1,           
           'post_title'     => ucwords('test'),    
           'post_name'      => strtolower(str_replace(' ', '-', trim('test'))),     
           'post_status'    => 'publish',        
           'post_content'   => ' ',              
           'post_type'      => 'page',       
           'post_parent'    => 0           
       )
   );
}

注:原代码中post_parent设为字符串' '不合理,已改为数字0(表示无父页面)

尝试修改的代码

$check_page_exist = new WP_Query( array(
    'pagename'       => 'test',
    'posts_per_page' => 1,
    'no_found_rows'  => true,
    'fields'         => 'ids',
) );

if ( empty( $check_page_exist->posts ) ) { 
    $page_id = wp_insert_post(
        array(
            'comment_status' => 'close',          
            'ping_status'    => 'close',        
            'post_author'    => 1,           
            'post_title'     => ucwords('test'),    
            'post_name'      => strtolower(str_replace(' ', '-', trim('link'))), // 已修改页面的slug
            'post_status'    => 'publish',        
            'post_content'   => '',              
            'post_type'      => 'page',       
            'post_parent'    => 0           
        )
    );
}

注:原尝试代码中post_parent设为字符串' '不合理,已改为数字0;另外pagename是查询页面slug,与原代码按标题查询的逻辑不符,这是核心问题

正确调整后的代码

要完全匹配原代码按标题检查页面是否存在的逻辑,同时消除弃用提示,可使用get_posts()查询post_title字段:

// 按标题查询是否存在对应页面
$check_page_exist = get_posts( array(
    'post_title'     => 'test',
    'post_type'      => 'page',
    'posts_per_page' => 1,
    'fields'         => 'ids', // 只获取ID,提升性能
    'no_found_rows'  => true, // 不需要分页计数,提升性能
) );

if ( empty( $check_page_exist ) ) { 
    $page_id = wp_insert_post(
        array(
            'comment_status' => 'closed', // 修正参数值:正确值为'closed'而非'close'
            'ping_status'    => 'closed',
            'post_author'    => 1,           
            'post_title'     => ucwords('test'),    
            'post_name'      => strtolower(str_replace(' ', '-', trim('link'))), // 自定义页面slug
            'post_status'    => 'publish',        
            'post_content'   => '',              
            'post_type'      => 'page',       
            'post_parent'    => 0 // 无父页面时设为0,而非空字符串
        )
    );
}

关键调整说明:

  • 替换get_page_by_title()为get_posts(),通过post_title精准匹配原逻辑,避免pagename查询slug的偏差
  • 修正了原代码中comment_status和ping_status的参数值错误
  • 将post_parent设为数字0,修正原代码中空字符串的不合理设置
  • 使用fields => 'ids'和no_found_rows => true减少数据库查询开销,提升性能

内容的提问来源于stack exchange,提问作者php

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 14:52:41