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

修复WordPress中get_page_by_title()函数已弃用问题的方法

替代WordPress已弃用的get_page_by_title()函数

你的代码问题所在

  • 错误通过meta_query查询name字段:页面标题实际存储在post_title字段,并非自定义元数据
  • 未指定post_type为page,默认会查询所有文章类型,和原函数仅查找页面的逻辑不符

完全兼容原功能的替代函数

下面的函数完全复刻get_page_by_title()的核心行为——仅查询已发布页面,精确匹配标题,返回对应ID:

function get_page_id_by_title($title, $post_type = 'page') {
    $args = array(
        'post_type'      => $post_type,
        'post_status'    => 'publish',
        'posts_per_page' => 1,
        'no_found_rows'  => true, // 优化性能,无需计算总条数
        'fields'         => 'ids', // 仅获取ID,提升查询效率
        'post_title'     => $title, // 精确匹配页面标题
    );

    $query = new WP_Query($args);

    if (!empty($query->posts)) {
        wp_reset_postdata();
        return $query->posts[0];
    }

    return null;
}

使用示例

和你原来的调用方式完全一致:

$pageId = get_page_id_by_title(lang('page-title'));

扩展说明

  • 如果需要返回完整的页面对象(而非仅ID),将'fields' => 'ids'改为'fields' => 'all',然后返回$query->posts[0]即可
  • 若需支持标题模糊匹配,可将'post_title' => $title替换为's' => $title,但该参数会同时匹配标题和内容;如果要仅模糊匹配标题,可改用以下查询条件:
    'meta_query' => array(
        array(
            'key'     => 'post_title',
            'value'   => $title,
            'compare' => 'LIKE',
        )
    ),
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 12:52:45