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

WordPress中如何通过标题获取页面URL?get_page_by_title已弃用

通过文章标题获取URL的简便方案(替代已弃用的get_page_by_title)

针对WordPress 6.2.0后get_page_by_title()被弃用的情况,这里提供两个无需直接使用WP_Query类的简便方案,适配多数据库测试场景:

方案1:基于get_posts封装轻量函数

get_posts是WordPress内置的简化查询函数,无需手动实例化WP_Query,代码简洁且符合官方规范:

function get_url_by_title($title, $post_type = 'post') {
    $posts = get_posts([
        'title' => $title,
        'post_type' => $post_type,
        'post_status' => 'publish',
        'numberposts' => 1,
        'fields' => 'ids' // 仅返回ID,减少数据开销
    ]);
    
    return !empty($posts) ? get_permalink($posts[0]) : false;
}

使用方式和你期望的get_url_by_title('文章标题', 'post')完全一致,找不到匹配文章时返回false,逻辑和原get_page_by_title对齐。

方案2:直接通过$wpdb查询(适配多数据库场景)

如果是多数据库测试场景,直接用全局$wpdb对象查询更灵活,避免依赖上层查询封装:

function get_url_by_title($title, $post_type = 'post') {
    global $wpdb;
    
    $post_id = $wpdb->get_var($wpdb->prepare(
        "SELECT ID FROM $wpdb->posts WHERE post_title = %s AND post_type = %s AND post_status = 'publish' LIMIT 1",
        $title,
        $post_type
    ));
    
    return $post_id ? get_permalink($post_id) : false;
}
  • 用$wpdb->prepare防止SQL注入,确保安全;
  • 直接精准匹配标题和文章类型,仅返回第一条匹配的发布状态文章URL;
  • 多数据库场景下,可通过切换$wpdb的数据库连接配置轻松适配不同测试环境。

补充说明

  • 上述方案均为精确标题匹配,若需模糊匹配,可将SQL中的post_title = %s改为post_title LIKE %s,并传入带通配符的标题参数(如'%'.$title.'%');
  • 若存在多篇同标题文章,仅返回最早发布的那篇的URL,和原get_page_by_title的行为一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:07:24