我正在与一位客户合作,他正在用自己的外部页眉和页脚包装我们WordPress网站的主体,去掉我们的页眉和页脚。我们的排队插件脚本没有工作,因为我们的页眉和页脚根本没有使用。此外,在我看来,如果插件不使用我们的页眉/页脚(不仅仅是我们在functions.php中排队的插件),那么它们就不会工作。这是真的吗?
这行不通-除非你只想读,否则可以跳过它。在我们的聚会上,我与一些聪明人讨论了这个问题,他们说我可以在我的函数中使用下面的代码片段打印脚本,然后它们会再次工作(大多数情况下,但这是一个不可靠的解决方法)。我已经试过了,但到目前为止似乎没有效果。我想知道为什么这应该起作用-它有什么作用?如果我能更好地理解它,也许我能找出问题所在。
function enqueue_scripts_the_wrong_way() {
printf( \'<script src="%s/js/jquery.stellar.init.js" data-load-script="1"></script>\', get_stylesheet_directory_uri() );
}
add_action( \'wp_footer_print_scripts\', \'enqueue_scripts_the_wrong_way\' );
无论如何,为什么要这样做@诺克罗斯在推特上问我是否可以解释为什么客户首先需要这个。知道我只负责设计/开发我将要讨论的WP主题可能会有所帮助。客户有一个现有的网站,其中一部分使用WP网站(用于他们的博客),另一部分使用自定义CMS。它们本质上是一个小型企业社交网络,该网站有大量基于用户登录/注销状态的动态内容,并传递用户信息。他们希望将该网站和博客中更静态的部分完全移动到一个WordPress安装中,以便市场营销部门能够更好地管理它(显然定制CMS是一件痛苦的事情)。但是,网站上的页眉和页脚包含一些登录/注销上下文。我告诉他们,WP可以获得他们的外部用户数据库并使用它,但这比我个人知道的要多——然而,我知道有很多开发人员这样做,并且当时机成熟时,我会做出正确的介绍。他们说这没有必要,因为他们可以用页眉和页脚包装WP内容,因为实际上他们只想从WP安装中获得内容。他们有一些熟悉WP的人在项目中工作,所以我假设不管他们怎么做,他们都知道他们必须以某种方式保持WP页眉和页脚的完整性,但我错了。我们最终得到的是,正是他们所说的,他们的页眉和页脚以及我们的身体内容。WP安装中确实有带有WP\\u head和WP\\u footer调用的页眉和页脚(尽管如此),但不管它们的包装器如何工作,它都没有使用它们。
SO网友:s_ha_dum
首先,您是正确的,如果删除页眉和页脚挂钩,许多插件将失败。你的客户正在做的事情会很成问题——我敢说“错”吗?这就去掉了很多功能。事实上,前端的可靠挂钩有限,许多挂钩与头部和脚有关。
其次,您所拥有的代码段将不起作用,因为它是一个页脚挂钩,并且页脚已被删除。
老实说,我认为你没有很多好的选择。你不能echo
之后的样式表</head>
或者,您会得到无效的标记(通常仍然有效),因此大多数包含样式表的黑客都是危险的。我说的黑客是指do_action(\'wp_enqueue_scripts\')
以及代码执行点之后代码中其他必需的钩子调用。
否则,您将需要依赖内联样式,并可能根据具体情况对插件进行黑客攻击,以迫使它们在您非常脆弱的环境中工作。
SO网友:fischi
如果您不关心标记,那么就可以用一种相对简单的方法提供插件来使用正确的挂钩。
通常,你打电话get_header()
和get_footer()
在主题和关联文件中header.php
和footer.php
必须调用函数wp_head()
和wp_footer()
.
当然,它们还包含标记和<head>
部分和所有内容。
如果您只交付一个内容节,那么标记将变得无效,但不一定会被破坏。
您可以尝试如下方式创建页面模板:
<?php wp_head(); ?>
<div id="yourdelivereddivwithoutheaderandfooter">...</div>
<?php wp_footer(); ?>
请记住,您必须解开插件运行的许多过滤器
wp_head
为了让它正常工作,但这可能是你最简单的方法。