我想在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 过滤器。这是我做的:
我在我的主题文件夹 page-custom.php 中制作了 page.php 的副本,并注明了get_header();
来电模板名称:自定义插在顶部。
我在我的主题文件夹 header-custom.php 中制作了 header.php 的副本,并在{{1}中插入了以下代码行部分:
<head>
我将以下代码添加到brand_details.php:
<?php add_filter( 'wp_title', 'set_custom_title' ); ?>
我根据调用brand_details.php页面的自定义页面模板创建了一个WordPress页面。
我希望会发生的是页面显示为标准的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函数中可用,但无济于事。
我欢迎任何有关如何实现这一目标的建议,并且我愿意采用其他解决方案来完成工作。
答案 0 :(得分: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主题&#39> header.php 的标题模板,名为 header-custom.php ,我替换了该行<title><?php elegant_titles(); ?></title>
,其中包含以下行:
<?php add_filter( 'wp_title', 'set_custom_title' ); ?>
<title><?php wp_title(); ?></title>