基于URL参数的自定义HTML标题

时间:2019-03-18 作者:Razey

基本上,我们有很多来自不同来源的流量来到我们的网站,寻找稍微不同的东西。

但我们不想为标题的每一个细微变化创建新页面,而是想知道是否有办法在URL中设置一个自定义参数,然后将该参数拉入HTML元素以显示它。

例如:

用户1被发送到:

网址:www.example。com什么的?标题=第1页

因此标题为:

标题一:第1页

用户2被发送到同一页,但参数不同:

网址:www.example。com什么的?标题=第3页

因此,标题:

标题二:第3页

谢谢各位。我大致了解如何做到这一点,但我对WPs挂钩不太熟悉。

但据我所知,您应该设置一个自定义参数,将该参数存储到变量中,然后显示该变量。但我知道这不是那么简单的xD

3 个回复
最合适的回答,由SO网友:tmdesigned 整理而成

另一种对用户来说可能更不透明的方法是查看referer\\u url。这是一个服务器级变量,虽然不是100%可靠,但通常可以很好地指示某人单击您的链接时所处的位置。

如果有人复制了链接并将其发送给其他人,这将不起作用。

function wpse331937_custom_referer_title( $title ){

    if ( wp_get_referer() ){
        $host = parse_url( wp_get_referer(), PHP_URL_HOST );

        switch ( $domain ){
            case \'google.com\' : 
            case \'www.google.com\' : 
                    $title = \'Hello Google Users\';
                    break;
            case \'cincinnati.craigslist.org\' :
                    $title = \'Hello, Cincinnati!\';
                    break;
            default :
                    break;
        }
    }

    return $title;       

}
add_filter( \'the_title\', \'wpse331937_custom_referer_title\', 10, 1 );
所以这里最大的优势是它是自动的,但正如我所说的,referer不会捕获所有案例。

另一个好处是,你不必把页面标题作为URL的一部分,这看起来有点尴尬。

通过以另一种方式使用相同的开关结构,您可以获得类似的好处,但没有referer块。例如:

function wpse331937_custom_title( $title ){

    if ( isset( $_GET[\'ref\'] ) && $_GET[\'ref\'] ){
        $ref = $_GET[\'ref\']

        switch ( $ref){
            case \'google\' : 
                    $title = \'Hello Google Users\';
                    break;
            case \'cin-craig\' :
                    $title = \'Hello, Cincinnati Craigslist Users!\';
                    break;
            default :
                    break;
        }
    }

    return $title;       

}
add_filter( \'the_title\', \'wpse331937_custom_title\', 10, 1 );
现在你的URL看起来像

www.example。com什么的?ref=cin克雷格

而不是

www.example。com什么的?title=您好,%20Cincinnati%20Craigslist%20Users!

SO网友:Qaisar Feroz

在里面page.php 或者php 当前使用的模板替换文件the_title()echo get_the_title() 用这个

if( isset( $_GET[\'title\'] ) ) echo  $_GET[\'title\'];
else the_title();
或将此添加到functions.php

function modified_title( $title, $id = null ) {

    if ( is_page( ) && isset( $_GET[\'title\'] ) ) {

         return  $_GET[\'title\'];
    }
    else{
        return $title;
    }

}
add_filter( \'the_title\', \'modified_title\', 10, 2 );

SO网友:Howard E

答案是一件事,但没有一个放置标题的特定挂钩,因为它取决于您的主题,以及它在主题/页面模板中的位置。

首先,你必须找到the_title() 标记为在模板文件中使用。

那就简单了。

<?php 

$title = (isset($_GET[\'title\'])) ? $_GET[\'title\'] : the_title();
echo \'<h1>\' . $title . \'</h1>\';
不过,您需要在主题中找到正确的位置。如果未设置URL参数,此代码将使用页面标题。

相关推荐

Altered Media Library URLs

我有一个客户的网站,是在他们离开另一家代理机构后我找到的。该机构使用了一个专有主题和自己的自托管页面生成器,以防止其在除他们之外的任何其他托管环境中更新或编辑。它的另一个方面是重新映射主题的URL并上载目录。因此,例如,代替WP在中查找主题文件http://domain.com/wp-content/themes/…. 它在里面找他们http://domain.com/t/….同样,对于图像上载,也可以在http://domain.com/wp-content/uploads/…, 它在里面找他们http