来自搜索结果页面中的wordpress插件的remove_action

时间:2015-10-02 09:57:13

标签: php wordpress class

这是我要在搜索结果页面中禁用的插件代码。 它会影响我的结果并以奇怪的方式显示它们。所以我想在这个页面中禁用它。在这里。

class WC_PSAD
{

 public function WC_PSAD() {
    $this->init();
}

public function init () {
    add_filter('loop_shop_per_page', array( $this, 'limit_posts_per_page'),99);

    //Fix Responsi Theme.
    add_action( 'a3rev_head', array( $this, 'remove_responsi_action'), 11 );
    add_action( 'woo_head', array( $this, 'remove_responsi_action'), 11 );
    add_action( 'wp_head', array( $this, 'remove_woocommerce_pagination'), 10 );
    add_action( 'woocommerce_after_shop_loop', array( $this, 'woocommerce_pagination') );

    //Check if shop page
    add_action( 'woocommerce_before_shop_loop', array( $this, 'check_shop_page'), 1 );

    // For Shop page
    add_action( 'woocommerce_before_shop_loop', array( $this, 'start_remove_orderby_shop'), 2 );
    add_action( 'woocommerce_before_shop_loop', array( $this, 'end_remove_orderby_shop'), 40 );
    add_action( 'woocommerce_before_shop_loop', array( $this, 'dont_show_product_on_shop'), 41 );
    add_action( 'woocommerce_after_shop_loop', array( $this, 'rewrite_shop_page'), 12 );

我想删除这4个动作" FOR SHOP PAGE"仅适用于搜索结果页面。 我该怎么办?

编辑:编辑:我所要做的就是检查参数url:

public function WC_PSAD() { 
        if(!isset($_GET["s"]) ){        
        $this->init();          } 
    }

感谢您的回答!

2 个答案:

答案 0 :(得分:1)

您可以使用is_search()

if(!is_search()) {
    // For Shop page
    add_action( 'woocommerce_before_shop_loop', array( $this, 'start_remove_orderby_shop'), 2 );
    add_action( 'woocommerce_before_shop_loop', array( $this, 'end_remove_orderby_shop'), 40 );
    add_action( 'woocommerce_before_shop_loop', array( $this, 'dont_show_product_on_shop'), 41 );
    add_action( 'woocommerce_after_shop_loop', array( $this, 'rewrite_shop_page'), 12 );
}

答案 1 :(得分:0)

基于@vard的回答,但反向行为:(两种方法都应该有效)

<?php
if( is_search() ) {
    // Remove actions on search page
    remove_action( 'woocommerce_before_shop_loop', array( $this, 'start_remove_orderby_shop'), 2 );
    remove_action( 'woocommerce_before_shop_loop', array( $this, 'end_remove_orderby_shop'), 40 );
    remove_action( 'woocommerce_before_shop_loop', array( $this, 'dont_show_product_on_shop'), 41 );
    remove_action( 'woocommerce_after_shop_loop', array( $this, 'rewrite_shop_page'), 12 );
}