努力为WordPress网站中的动态PHP页面设置页面标题

时间:2015-06-03 06:52:14

标签: php wordpress

我想在WordPress网站上显示几个PHP页面。

我正在使用在帖子和页面中允许PHP 插件,并使用以下代码添加WordPress页面:

[php]include $_SERVER['DOCUMENT_ROOT'] . '/brand_details.php';[/php]

我这样做是因为我希望解决方案尽可能便携(所以我宁愿不编辑functions.php,这可能会在下一个WordPress更新中被覆盖),我希望它是一些相对非技术性的WordPress人可以解决这个问题。

它适用于大多数页面,但我正在努力处理内容依赖于URL参数的页面。特别是,我在这种情况下努力设置页面标题。

例如,我有一个名为 brand_details.php 的页面,其中显示了品牌的详细信息(名称,地址,网站等)。

使用URL参数调用它,例如?brand_url = acehardware

从该参数中,我在MySQL表中查找Brand详细信息并显示结果。

这可行,但我丢失了WordPress页眉和页脚。为了解决这个问题,我尝试将以下代码添加到PHP页面的开头和结尾:

一开始:

require $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php';
get_header();

最后:

get_footer();

虽然我遇到了几个样式问题,但这种方法很有用 - 但也许这与我正在使用的主题(Divi)有关。

但我不能做的是在页面标题中显示品牌名称。要使用上面的示例,我想显示诸如“Ace Hardware Brand Details”之类的标题。显然需要根据所选品牌进行更改。

所以我的下一步是删除此代码并尝试使用 wp_title 过滤器。这是我做的:

  1. 我在我的主题文件夹 page-custom.php 中制作了 page.php 的副本,并注明了get_header();来电模板名称:自定义插在顶部。

  2. 我在我的主题文件夹 header-custom.php 中制作了 header.php 的副本,并在{{1}中插入了以下代码行部分:

    <head>
  3. 我将以下代码添加到brand_details.php:

    <?php add_filter( 'wp_title', 'set_custom_title' ); ?>
    
  4. 我根据调用brand_details.php页面的自定义页面模板创建了一个WordPress页面。

  5. 我希望会发生的是页面显示为标准的WordPress页面,但页面标题是根据显示的品牌设置的。

    实际发生的是WordPress页眉和页脚正确显示,但上面提到的$ brand_name变量没有被set_custom_title函数使用,因此页面标题最终为“详情页面”而没有品牌名称。

    (简化了可读性)代码,我在调用此函数之前查找了品牌名称,如下所示:

    function set_custom_title($data)
    {
     return "$brand_name Details Page";
    }
    get_header('custom');
    

    我知道这很有效,因为我在主页面中使用了结果。

    我已经尝试修改最后一行来读取$brand_url = $_REQUEST["brand_url"]; $sql = "SELECT * FROM brand_details WHERE brand_url = '$brand_url' LIMIT 1"; $stmt = $db_conn->prepare($sql); $stmt->execute(array()); $row = $stmt->fetch(); $brand_name = $row['brand_name']; ,希望$ brand_name变量在set_custom_title函数中可用,但无济于事。

    我欢迎任何有关如何实现这一目标的建议,并且我愿意采用其他解决方案来完成工作。

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。以下是我的表现方式:

  1. 我根据Divi主题 page.php 创建了一个页面模板,名为 page-brand_details.php ,并添加了以下代码我的php页面。我还从一开始就删除了get_header();,并在最后添加了以下代码:

    function set_custom_title($data) { global $brand_name; return $brand_name." Brand Details Page"; } get_header('custom');

  2. 我创建了一个基于Divi主题&#39> header.php 的标题模板,名为 header-custom.php ,我替换了该行<title><?php elegant_titles(); ?></title>,其中包含以下行:

    <?php add_filter( 'wp_title', 'set_custom_title' ); ?>
    <title><?php wp_title(); ?></title>
    
  3. 我使用上面创建的模板创建了一个空白的WordPress页面。