Bit是一个基本问题,但有人可以确认此声明得到确认:WordPress Pages(在其中创建的某些模板)可以提取不同的CSS和JS吗?
或者 - WordPress是否只允许在整个网站上提取通用CSS + JS?
感谢您清除此事。
答案 0 :(得分:2)
取决于您使用的插件和主题。 WordPress / PHP函数wp_enqueue_style()
和wp_enqueue_script()
可以由每个人(核心,主题,插件,你)逐字地使用,以请求WordPress加载样式或JavaSctript。您可以将其与WordPress功能结合使用,以检查当前页面是否是您要过滤的内容(帖子类型,帖子,首页,类别档案,模板等)。以下是在首页加载自定义样式的示例:
if (is_front_page()) {
wp_enqueue_style('custom-frontpage', 'my/path/to/frontpage.css');
}
您必须将此段代码挂钩到wp_enqueue_script
操作,以便WordPress在适当的时间执行它。以下是使用匿名函数的示例:
add_action('wp_enqueue_scripts', function() {
if (is_front_page())
wp_enqueue_style('custom-frontpage', 'my/path/to/frontpage.css');
});
您也可以将代码注册为"普通"函数并将函数名称传递给add_action()
。
编辑:启用和禁用插件有点困难,因为在不检查源代码的情况下,您永远无法了解它们如何实现其功能。以下是我对此的看法:
该插件可能会使用上述方法(wp_enqueue_styles
,wp_enqueue_scripts
)来注册它的样式和脚本。该插件,因为它假定在所有页面和帖子上都需要,在没有前面描述的条件检查的情况下在每个页面上执行此操作。
您可以执行以下操作之一来停止插件执行此操作:
确定插件加载样式和脚本的位置,并添加if语句,只有在post-ID与您想要的post-ID匹配时才这样做。 此方法很糟糕,因为每次更新插件时您的更改都会丢失。
写一个"计数器插件" (你可以将它添加到你的主题或找到一个允许你将PHP添加到你的页面的插件)" dequeues"插件添加的style和script带有反向条件标记
反插件方法如下:
function custom_unregister_plugin() {
if (not the desired blog post) {
wp_dequeue_style('my-plugin-stylesheet-handle');
wp_dequeue_script('my-plugin-script-handle');
}
}
确保在插件的入队代码之后执行此功能,在同一个挂钩中给它一个低优先级(999只是一个例子,自己测试一下):
add_action('wp_enqueue_scripts', 'custom_unregister_plugin', 999);
答案 1 :(得分:0)
使用wp_enqueue_style(),您可以添加样式表(https://developer.wordpress.org/reference/functions/wp_enqueue_style/)
您可以在检测到使用哪个模板后使用它
function enqueue_custom_stylesheet() {
if(get_page_template() == 'contact.php')
wp_enqueue_style( 'contact-style', get_template_directory_uri().'/contact.css' );
}
add_action( 'wp_enqueue_scripts', 'enqueue_custom_stylesheet' );
答案 2 :(得分:0)
您可以使用wp_enqueue_style作为CSS,wp_enqueue_script作为JS,wp_localize_script将变量从PHP传递给JS。
您可以使用以下钩子调用这些:
funtion enqueue_my_stuff()
{
// your enqueue function calls
}
add_action('wp_enqueue_scripts','enqueue_my_stuff'); //front end
add_action('admin_enqueue_scripts','enqueue_my_stuff'); //admin panel
add_action('login_enqueue_scripts','enqueue_my_stuff'); //login screen