में परिभाषित किया तो मैं इस प्लगइन कोडवर्डप्रेस - हटाने कार्रवाई प्लगइन वर्ग
class WC_List_Grid {
public function __construct() {
add_action('wp' , array($this, 'setup_gridlist') , 20);
}
function setup_gridlist() {
add_action('woocommerce_before_shop_loop', array($this, 'gridlist_toggle_button'), 30);
}
function gridlist_toggle_button() {?>
<nav class="gridlist-toggle">
<a href="#" id="grid" title="<?php _e('Grid view', 'woocommerce-grid-list-toggle'); ?>"><span class="dashicons dashicons-grid-view"></span> <em><?php _e('Grid view', 'woocommerce-grid-list-toggle'); ?></em></a>
<a href="#" id="list" title="<?php _e('List view', 'woocommerce-grid-list-toggle'); ?>"><span class="dashicons dashicons-exerpt-view"></span> <em><?php _e('List view', 'woocommerce-grid-list-toggle'); ?></em></a>
</nav>
<?php }
}
मैं gridlist_toggle_button समारोह की सामग्री को बदल करना चाहते हैं। इस प्रकार मैं उस फ़ंक्शन की सामग्री को बदलने की योजना बना रहा हूं। मूल रूप से एक ही एचटीएमएल के साथ एक और समारोह लिखने की तरह, लेकिन मेरे परिवर्तनों के बिट्स। जैसे
add_action('woocommerce_before_shop_loop','new_gridlist_toggle_button')
function new_gridlist_toggle_button() {?>
<nav class="gridlist-toggle">
<a href="#" class="grid-view" title="<?php _e('Grid view', 'woocommerce-grid-list-toggle'); ?>"><span class="dashicons dashicons-grid-view"></span> <em><?php _e('Grid view', 'woocommerce-grid-list-toggle'); ?></em></a>
<a href="#" class="list-view" title="<?php _e('List view', 'woocommerce-grid-list-toggle'); ?>"><span class="dashicons dashicons-exerpt-view"></span> <em><?php _e('List view', 'woocommerce-grid-list-toggle'); ?></em></a>
</nav>
<?php }
}
इस तरह कुछ है, मैं सीधे
कि के लिए प्लगइन फ़ाइलें बदलने की जरूरत नहीं होगी, मैं इससे संबंधित कार्रवाई हटाने की कोशिश कर रहा हूँ।
add_action('woocommerce_before_shop_loop', array($this, 'gridlist_toggle_button'), 30);
ताकि मैं अपना कोड उपयोग कर सकूं। लेकिन मैं इस कार्रवाई को हटाने के लिए प्रतीत नहीं कर सकता। मैंने अभी तक यह कोशिश की है।
विधि 1:
global $WC_List_Grid ;
remove_action('woocommerce_before_shop_loop', array($WC_List_Grid, 'gridlist_toggle_button'), 100);
विधि 2:
function remove_plugin_actions(){
global $WC_List_Grid ;
remove_action('woocommerce_before_shop_loop', array($WC_List_Grid, 'gridlist_toggle_button'), 100);
}
add_action('init','remove_plugin_actions');
विधि उनमें से 3
remove_action('woocommerce_before_shop_loop', array('WC_List_Grid', 'gridlist_toggle_button'), 100);
कोई भी काम करने के लिए लगता है।
कुछ दिमागी तूफान के साथ, मुझे लगता है कि दो संभावित कारण हो सकते हैं।
- यह काम नहीं कर रहा है क्योंकि जिस क्रिया को मैं निकालना चाहता हूं वह सीधे हुक से जुड़ा नहीं है। कार्रवाई के अंदर इसकी कार्रवाई।
- मैं functions.php के माध्यम से gridlist_toggle_button के आउटपुट को अवरुद्ध करने का प्रयास कर रहा हूं। लेकिन यदि प्लगइन्स functions.php से पहले लोड होते हैं तो फ़ंक्शन को अवरुद्ध करने के लिए पहले से ही कॉल किया जा रहा है और इसलिए यह हमेशा आउटपुट दिखा रहा है।
मैं ओओपी के साथ बिल्कुल अच्छा नहीं हूं। क्या कोई व्यक्ति कृपा करके मेरी सहायता करेगा?
कृपया मेरे अपडेट किए गए प्रश्न की समीक्षा करें। और मैंने पहले से ही इस विधि की कोशिश की है और यह या तो काम नहीं करता है। –
क्या आपने 30 या 100 प्राथमिकता के साथ प्रयास किया था? क्या आपने कोई प्राथमिकता नहीं दी है? –
सभी के साथ प्रयास किया, 30 और 100 और कोई प्राथमिकता नहीं। मुझे लगता है कि आपका बिंदु "plugins को functions.php से पहले लोड किया जा रहा है" कारण है। क्योंकि मैं gridlist_toggle_button के आउटपुट को अवरुद्ध करने की कोशिश कर रहा हूं। लेकिन जैसा कि आपने सुझाव दिया है, यदि प्लगइन्स functions.php से पहले लोड होते हैं तो वह फ़ंक्शन पहले से ही कॉल किया जा रहा है और इसलिए यह हमेशा आउटपुट दिखा रहा है। –