具有 URL 参数的页面的动态元标题?
Dynamic meta titles for pages with URL parameters?
我有一个名为 /team-page/?id=x 的页面,它是在 WordPress 中构建的
“id”的URL参数决定了该页面上动态显示的内容。但是,该页面的元标题是静态设置的。有没有一种方法可以根据页面内容动态设置元标题? /team-page 的每个变体都有一个独特的 H1 - 理想情况下,我很乐意抓住这个 H1 并将其设置为元标题。
您可以使用 document_title_parts
过滤器来实现。它以 $titles
作为参数,它由两部分组成 - 标题和网站(首页除外 - 而不是网站它的标语)
所以试试这个
add_filter( 'document_title_parts', 'custom_title' );
function custom_title( $title ) {
// Just to see what is $title
// echo '<pre>';
// print_r( $title );
// echo '</pre>';
// die();
$uri = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH ); // get current uri without query params
// Change meta only on team-page.
if ( '/team-page/' === $uri ) {
// you can do here anything you want
$title['title'] = get_the_title() . ' and whatever string you want ' . $_GET['id'];
}
return $title;
}
此外,如果需要,请不要忘记检查和消毒您的 $_GET['id']
。
您正在寻找 get_query_var()
Retrieves the value of a query variable in the WP_Query class.
需要了解的一件小事是 get_query_var()
仅检索 WP_Query
识别的 public 查询变量。
所以我们需要先注册我们的变量。这被认为是最佳实践。在 Wordpress 生态系统中,简单地使用 $_GET['id']
被认为是不安全的。
add_filter( 'query_vars', 'wpso66660959_query_vars' );
function wpso66660959_query_vars( $qvars ) {
$qvars[] = 'ref';
return $qvars;
};
您还应该使用 id
以外的东西,因为 Wordpress 已经使用它来处理 WP_Query
。我使用了 ref
(参考),但您可以选择任何不影响 Wordpress 核心的内容。
然后我们可以简单地构建我们的自定义标题。
<?= '<title>' . get_the_title() . ' | Order N° ' . get_query_var( 'ref', 'undifined' ) . '</title>'; ?>
请注意,如果您的主题使用 Wordpress 设置页面标题,您可能需要在 function.php
.
中围绕 add_theme_support( 'title-tag' );
设置某种条件语句
类似...
//...
if ( ! is_page( 'team-page' ) )
add_theme_support( 'title-tag' );
title-tag
通常包含在您的主题选项中。
我有一个名为 /team-page/?id=x 的页面,它是在 WordPress 中构建的
“id”的URL参数决定了该页面上动态显示的内容。但是,该页面的元标题是静态设置的。有没有一种方法可以根据页面内容动态设置元标题? /team-page 的每个变体都有一个独特的 H1 - 理想情况下,我很乐意抓住这个 H1 并将其设置为元标题。
您可以使用 document_title_parts
过滤器来实现。它以 $titles
作为参数,它由两部分组成 - 标题和网站(首页除外 - 而不是网站它的标语)
所以试试这个
add_filter( 'document_title_parts', 'custom_title' );
function custom_title( $title ) {
// Just to see what is $title
// echo '<pre>';
// print_r( $title );
// echo '</pre>';
// die();
$uri = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH ); // get current uri without query params
// Change meta only on team-page.
if ( '/team-page/' === $uri ) {
// you can do here anything you want
$title['title'] = get_the_title() . ' and whatever string you want ' . $_GET['id'];
}
return $title;
}
此外,如果需要,请不要忘记检查和消毒您的 $_GET['id']
。
您正在寻找 get_query_var()
Retrieves the value of a query variable in the WP_Query class.
需要了解的一件小事是 get_query_var()
仅检索 WP_Query
识别的 public 查询变量。
所以我们需要先注册我们的变量。这被认为是最佳实践。在 Wordpress 生态系统中,简单地使用 $_GET['id']
被认为是不安全的。
add_filter( 'query_vars', 'wpso66660959_query_vars' );
function wpso66660959_query_vars( $qvars ) {
$qvars[] = 'ref';
return $qvars;
};
您还应该使用 id
以外的东西,因为 Wordpress 已经使用它来处理 WP_Query
。我使用了 ref
(参考),但您可以选择任何不影响 Wordpress 核心的内容。
然后我们可以简单地构建我们的自定义标题。
<?= '<title>' . get_the_title() . ' | Order N° ' . get_query_var( 'ref', 'undifined' ) . '</title>'; ?>
请注意,如果您的主题使用 Wordpress 设置页面标题,您可能需要在 function.php
.
add_theme_support( 'title-tag' );
设置某种条件语句
类似...
//...
if ( ! is_page( 'team-page' ) )
add_theme_support( 'title-tag' );
title-tag
通常包含在您的主题选项中。