在WordPress中的特定页面上禁用Jetpack Carousel

时间:2018-02-15 20:56:51

标签: php wordpress carousel jetpack

我正在尝试使用我的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()

我缺少什么?!

3 个答案:

答案 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 应该被禁用。