首页 文章

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

提问于
浏览
0

我有几个PHP页面,我想在WordPress网站上出现 .

我在Posts and Pages插件中使用Allow PHP,并使用以下代码添加WordPress页面:

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

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

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

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

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

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

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

在开始时:

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

在末尾:

get_footer();

虽然我遇到了几个样式问题,但这种方式仍然有效 - 但这可能与我正在使用的主题(Divi)有关 .

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

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

  • 我在我的主题文件夹中创建了一个名为page-custom.php的page.php副本,其中 get_header(); 调用已注释掉,模板名称:自定义插入顶部 .

  • 我在我的主题文件夹中创建了一个名为header-custom.php的header.php副本,并在 <head> 部分插入了以下代码行:

<?php add_filter( 'wp_title', 'set_custom_title' ); ?>
  • 我将以下代码添加到brand_details.php:
function set_custom_title($data)
{
 return "$brand_name Details Page";
}
get_header('custom');
  • 我根据调用brand_details.php页面的自定义页面模板创建了一个WordPress页面 .

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

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

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

$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'];

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

我已经尝试修改最后一行来读取 global $brand_name = $row['brand_name']; ,希望$ brand_name变量在set_custom_title函数中可用,但无济于事 .

我欢迎任何关于如何实现这一目标的建议,并且我愿意接受替代解决方案以完成工作 .

1 回答

  • 0

    我已经解决了这个问题 . 我是这样做的:

    • 我创建了一个页面模板,基于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');

    • 我根据Divi主题的header.php创建了一个 Headers 模板,名为header-custom.php,我用以下几行替换了 <title><?php elegant_titles(); ?></title> 行:
    <?php add_filter( 'wp_title', 'set_custom_title' ); ?>
    <title><?php wp_title(); ?></title>
    
    • 我使用上面创建的模板创建了一个空白的WordPress页面 .

相关问题