Php 在WordPress的特定页面上禁用Jetpack转盘

Php 在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

我正在尝试使用我的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
    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,只是添加了另外两个最终选项。