我正在尝试使用我的functions.php中的以下代码禁用特定帖子ID上的Jetpack Carousel
function djcoh_disable_carousel( $value ) {
wp_reset_query();
if ( is_page( 614 ) ) {
$value = true; // true to disable Carousel
}
// Return original or changed value
return $value;
}
add_filter( 'jp_carousel_maybe_disable', 'djcoh_disable_carousel' );
以下是GitHub
上jp_carousel_maybe_disable的参考资料似乎我无法在functions.php中使用is_page() - 尽管我认为我可以使用codex
中提到的wp_reset_query()我缺少什么?!
答案 0 :(得分:1)
我通过在插件文件中使用REQUEST_URI来管理此问题:
<?php
// No direct access
if ( ! defined( 'ABSPATH' ) ) exit;
if ( $_SERVER["REQUEST_URI"] === '/PAGE-SLUG/' ) {
add_filter( 'jp_carousel_maybe_disable', '__return_true' );
}
为您的子弹更改PAGE-SLUG,就一切就绪。
您可以在PHP's manuals中找到有关REQUEST_URI的信息:
'REQUEST_URI' 为了访问该页面而给出的URI;例如'/index.html'。
答案 1 :(得分:0)
您拥有的代码来自一个教程,该教程旨在作为一个简单的插件运行。您的代码当前不起作用的原因是因为您在functions.php中使用它。
在它的当前形式中,只要将函数作为functions.php文件的一部分读取,就会调用它。这通常是在页面形成之前的一段时间,因此您无法使用is_page{}
获取页面ID。
相反,您应该查询该页面并获取其ID如下:
function djcoh_disable_carousel( $value ) {
//get the global
global $post
echo "TEST PAGE ID: ".$post->ID;
//wp_reset_query();
if ( $post->ID == 614 ) {
$value = true; // true to disable Carousel
}
wp_reset_query();
// Return original or changed value
return $value;
}
add_filter( 'jp_carousel_maybe_disable', 'djcoh_disable_carousel' );
如果不起作用,请尝试:
function djcoh_disable_carousel( $value ) {
//get the global
global $wp_query;
$post_ID = $wp_query->post->ID;
echo "TEST PAGE ID: ". $post_ID;
//wp_reset_query();
if ( $post_ID == 614 ) {
$value = true; // true to disable Carousel
}
wp_reset_query();
// Return original or changed value
return $value;
}
add_filter( 'jp_carousel_maybe_disable', 'djcoh_disable_carousel' );
如果上述方法都不起作用,那么在过程中过早地调用脚本来获取页面ID。因此,最简单的选择是将此脚本放在其自己的.php文件中,然后将其上传到插件根文件夹。然后从插件菜单中激活它。
最后一个选项是将其创建为过滤器或脚本,并在实际页面模板中添加函数调用。
答案 2 :(得分:0)
有条件地出列 Jetpack carousel 脚本和样式表似乎最简单。当 wp_footer 操作触发时,通常用于控制输出的条件将在请求中可用。
add_action( 'wp_footer', function() {
if ( is_page( $page ) ) {
wp_dequeue_script( 'jetpack-carousel' );
wp_dequeue_style( 'jetpack-carousel' );
}
}
一定要修改 is_page 函数以包含 $page 参数,否则条件将匹配所有页面。 Place the code in your theme's functions.php 文件和 Jetpack carousel 应该被禁用。