仅在动态页面中更改标题

时间:2017-08-31 作者:Ptrckk

我一直在尝试在动态页面中更改标题,但没有任何运气。

我所做的是创建了两个页面模板,从中可以从外部数据库加载项目(场合)。在单页模板中,我加载单页场景:

<?php include \'Occasions-files/single.php\';?>
我加载的第二个页面模板概述了各种场合:

<?php include \'Occasions-files/file.php\';?>
现在,标题是SEO插件的默认标题。我已经尝试了一次搜索引擎优化(All-in-One SEO)和一次搜索引擎优化(Yoast SEO),但似乎无法覆盖标题。我想把单曲改成单曲。php进入场合名称,但将所有其他页面留给SEO插件。

我对此没有太多经验,也不知道从哪里开始。出于测试目的,我尝试将test手动放在get\\u标题之前,然后它会显示手动添加的标题,但我的标题被弄乱了。当我将标题放在get\\u标题之后时,它会加载标题ok,但标题不会显示,仍然是默认的

<title>test</title>
<?php get_header(); ?>
此外,我尝试添加一个过滤器(到functions.php),但这也没有任何结果,或者我不知道如何插入它。。?

function custom_title_function($custom_title) {
$custom_title[\'title\'] = "Test Title";
return $custom_title; }
add_filter( \'document_title_parts\', \'custom_title_function\' );
有人知道如何解决这个问题吗?提前感谢!

3 个回复
SO网友:James

为了确保你的<head> 区域(大概在header.php中)是这样的?

<title><?php wp_title(); ?></title>
Yoast必须这样才能使用它,并且能够覆盖标题。

不管怎样,如果你把这个加到你的单曲里。php(或至少在此之前get_header() 为该页面运行)您应该能够修改页面标题:

function custom_page_title( $title ){
    $return = $title;

    // You can check what the current post is via $wp_query->post
    global $wp_query;
    if( isset($wp_query->post) ){
        $id = $wp_query->post->ID;
        $post_title = $wp_query->post->post_title;
        // etc

        $return = $post_title;
    }

    // Or just outright change the title
    $return = \'test\';

    return $return;
}
add_filter(\'wp_title\', \'custom_page_title\', 20);
这里需要注意的另一点是,如果您使用的是Yoast,则必须确保此函数在Yoast修改标题后运行,否则Yoast将覆盖您所做的任何更改。这就是20 作为中的第三个参数输入add_filter(). 我认为Yoast在15时运行其过滤器,因此在20时运行您的过滤器(或任何高于15的数字)将确保您的过滤器在Yoast的过滤器之后运行。

SO网友:Manioo

如果您使用的是多功能搜索引擎优化,那么您可以在以下过滤器挂钩的帮助下使用覆盖动态wp标题

add_filter( \'aioseop_title\', \'change_wordpress_seo_title\' );

function change_wordpress_seo_title( $title ){
    $title = \'modified title\';
    return $title;
}

SO网友:Anis
if(isset($_GET[\'v\'])) {
    if($_GET[\'v\'] == "about") {

   $title = "About Us";
}
else if ($_GET[\'v\'] == "contact") {
   $title = "Contact Us";
}
}
else {
   $title = "Home";
}

<title><?php echo $title;?></title>
结束