我有几个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 回答
我已经解决了这个问题 . 我是这样做的:
get_header();
并在最后添加了以下代码:function set_custom_title($data) { global $brand_name; return $brand_name." Brand Details Page"; } get_header('custom');
<title><?php elegant_titles(); ?></title>
行: