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
相关产品推荐
相关产品推荐

