Php 在WordPress的特定页面上禁用Jetpack转盘
我正在尝试使用我的functions.php中的以下代码禁用特定post ID上的Jetpack CarouselPhp 在WordPress的特定页面上禁用Jetpack转盘,php,wordpress,carousel,jetpack,Php,Wordpress,Carousel,Jetpack,我正在尝试使用我的functions.php中的以下代码禁用特定post 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
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' );
这是jp_旋转木马的参考资料
似乎我无法在functions.php中使用is_page()——尽管我认为我可以通过使用wp_reset_query()来实现,如
我错过了什么 您的代码来自一个教程,该教程旨在作为一个简单的插件运行。代码当前无法工作的原因是您正在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文件中,然后将其上载到plugins根文件夹。然后从插件菜单激活它
最后一个选项是将其创建为筛选器或脚本,并在实际页面模板中添加函数调用。我通过在插件文件中使用请求URI来管理此操作:
<?php
// No direct access
if ( ! defined( 'ABSPATH' ) ) exit;
if ( $_SERVER["REQUEST_URI"] === '/PAGE-SLUG/' ) {
add_filter( 'jp_carousel_maybe_disable', '__return_true' );
}
有条件地将Jetpack carousel脚本和样式表出列似乎是最简单的。当wp_footer操作触发时,通常用于控制输出的条件将在请求中的某一点可用
add_action( 'wp_footer', function() {
if ( is_page( $page ) ) {
wp_dequeue_script( 'jetpack-carousel' );
wp_dequeue_style( 'jetpack-carousel' );
}
}
一定要修改函数以包含$page参数,否则条件将匹配所有页面。文件和Jetpack转盘应禁用。为什么您认为您无法使用is\U页面?你是怎么把它隔离成这样的?您是否尝试过不带if子句的代码,以查看该代码是否实际禁用了旋转木马?我已验证它在不带if子句的所有页面上禁用了旋转木马。另一个答案让我相信我不能在functions.php中使用is_page(),为什么要使用wp_reset_query()代码>?它需要在query\u posts
之后使用,我从这里得到了它,并且在is\u page()的WP codex上也看到了它的引用,@SamvelAleqsanyan说重置通常在自定义查询之后使用,以将所有内容返回到循环查询。感谢您的回答!但仍然存在相同的问题-它可以在没有if子句的所有页面上工作-但是只要我添加if($post->ID==614)
或is\u页面
它就停止工作了,请尝试我更新的代码。如果不起作用,您是否看到通过echo输出的页面ID?仍然不起作用。它会回显“测试页面ID:”但不会回显页面IDName!在global$post中添加分号代码>但仍然没有响应页面ID,只是添加了另外两个最终选项。