让页面模板只是另一个页面模板的“包含”?

时间:2021-05-06 作者:Drewdavid

我想在我的子主题中创建一个名为;服务;。

This template is identical to page.php - 除了我只想添加一些JSON LD(即,https://schema.org/Service) 到这些页面。

但是,我不想创建页面的副本。php模板(例如servicepage.php) 我担心在主题更新的情况下,我的模板会变成;孤立的“;。。。也就是说,page.php 将从根本上改变父主题,但我的servicepage.php 文件不会反映这些更改。

因此:

Is there a smarter way of creating a template so that I don\'t need to use a "snapshot" of the entire page.php file, but could (eg) only include the changed (schema) code, and then call the original page.php for the rest of it - so that it always matches the parent theme\'s page.php template otherwise?

我希望这一切都有意义——我愿意接受另一种解决方案,但到目前为止,模板似乎是在这些服务页面上插入此代码的最简单方法。

谢谢

1 个回复
SO网友:rudtek

有很多方法可以解决这个问题。我认为,根据您的评论,最好的解决方案是使用纯挂钩。我还是不太确定你在补充什么,这里有一些想法。(您建议在单独的页面中包含page.php是行不通的,因为所有代码都是从page.php中提取出来的。

1. add custom code to the footer of a set page. (hooked wp_footer)

在子主题的函数中。php添加以下代码:

function dd_custom_function() {
    if (is_page(\'services\')) { //add your slug or id  or other conditional here that you want to call your code
        echo \'<p>This is inserted at the bottom</p>\';
    }
}
add_action( \'wp_footer\', \'dd_custom_function\');
(如果要添加到标题,请更改wp_footerwp_header)

2. Put your code in a separate file and pull it into your footer.

添加代码文件custom.js 到/js/中的子主题目录/(创建该目录)

将此代码添加到函数中。子主题的php:(选择wp\\u排队行之一..一行用于页眉,一行用于页脚。)

function dd_enqueue_function() {
    if (is_page(\'services\')) { //add your slug or id  or other conditional here that you want to call your code
        wp_enqueue_script(\'creative-blog-main-script\', get_stylesheet_directory_uri() . \'/js/custom.js\', array(\'jquery\'), null, true); // Here in this example the last value has been set as true, so, it will be loaded in the footer.
        wp_enqueue_script(\'creative-blog-script\', get_stylesheet_directory_uri() . \'/js/custom.js\', array(\'jquery\'), null, false); // Here in this example the last value has been set as false, so, it will be loaded in the header.
    }
}
add_action(\'wp_enqueue_scripts\', \'dd_enqueue_function\');

3. See if your theme has any actions set you can a hook into.

许多主题将为您设置可以挂钩的操作。它甚至可能在页脚中。php查找do_action 并使用这些操作放置自定义代码。如果没有,您可以在页面中添加一行。php文件:

do_action(\'dd_cool_action\');
无论您希望代码在哪里执行。

然后在您孩子的自定义函数中调用代码以执行操作:

add_action(\'dd_cool_action\', dd_custom_function\', 5);

function dd_custom_function { ?>
    <div> Drew David custom code activated </div>
<?php }

相关推荐

Sucuri SiteCheck在使用iThemes Security Pro插件的域上失败

我在我的几个网站上安装了iThemes Security Pro插件。最近,我注意到我的Sucuri SiteCheck(自动和非自动)扫描都失败了,但我不知道为什么会这样。日志也不明确,告诉我:Unable to properly scan your site. Timeout reached.下面是插件给我的原始日志。如果有人能告诉我问题出在哪里,我将不胜感激。我没有在插件或Apache级别启用防火墙,尽管我启用了ModSecurity。但是,每当我尝试SiteCheck时,ModSecurity的日