📜  通过 url wordpress 获取 id - PHP (1)

📅  最后修改于: 2023-12-03 15:28:23.724000             🧑  作者: Mango

通过 URL WordPress 获取 ID

在 WordPress 中,每个页面、帖子、类别、标签等都有一个唯一的标识符,称为 ID。通过这个 ID,我们可以很容易地在代码中获取特定的页面或帖子。

但是,如何从 WordPress 中的 URL 获取这个 ID 呢?下面提供一些方法。

1. 使用内置函数

WordPress 提供了许多内置函数,可以帮助我们获取 URL 中的信息,比如 get_permalink()。函数 get_permalink() 返回当前页面或帖子的永久链接,我们可以从中获取 ID。

$permalink = get_permalink(); // 获取当前页面的永久链接
$id = url_to_postid($permalink); // 获取永久链接中的 ID
echo $id; // 输出 ID

url_to_postid() 函数可以将永久链接转换为帖子或页面的 ID。

2. 使用正则表达式

我们也可以使用正则表达式从 URL 中提取 ID。下面是一个示例:

$url = "https://example.com/post/1234/";
$pattern = '/(\d+)/'; // 匹配数字
preg_match($pattern, $url, $matches); // 在 URL 中查找匹配的部分
$id = $matches[0]; // 数组中的第一个元素是匹配的 ID
echo $id; // 输出 ID

这个示例中使用了 PHP 自带的 preg_match() 函数,使用正则表达式查找 URL 中的数字并返回 ID。

3. 使用 WordPress API

最后,我们还可以使用 WordPress API 中提供的功能,比如 WP_QueryWP_Query 可以根据 URL 中的参数返回帖子或页面的 ID。

$args = array(
    'name' => basename(get_permalink()), // 获取永久链接中的最后一段并作为帖子/页面名称
    'post_type' => array('post', 'page'),
    'post_status' => 'publish',
    'posts_per_page' => 1
);
$query = new WP_Query($args);
if ($query->have_posts()) {
    $id = $query->post->ID; // 获取帖子或页面的 ID
    echo $id; // 输出 ID
}

这个示例中,我们构造了一个 WP_Query 的查询参数,使用 basename() 函数获取永久链接中的最后一段,并将其作为帖子或页面的名称传递给 WP_Query。如果查询到结果,我们就可以从 $query->post->ID 中获取 ID。

以上是三种从 URL 中获取 WordPress ID 的方法。根据不同的使用场景,我们可以灵活选择合适的方法。