बदलते wp- व्यवस्थापक / widgets.php


11

हम मुख्य रूप से साइट व्यवस्थापक को समझने में मदद करने के लिए व्यवस्थापक पैनल में विजेट पेज को थोड़ा अलग तरीके से डिजाइन करना चाहते हैं, जहां प्रत्येक विजेट साइट में दिखाई देगा:

यहाँ छवि विवरण दर्ज करें

उसके लिए, हमें HTML को बदलने की आवश्यकता है जो widgets.php रेंडरर्स (बस सीएसएस को बदलने के लिए पर्याप्त नहीं है)। कोर को छुए बिना हम ऐसा कैसे करेंगे?


उपरोक्त दृष्टिकोण के साथ विजेट्स को खींचने के लिए पैनल कहाँ से होगा?
sanchothefat

@sanchothefat नीचे
ली कोहेन

क्यों न आगे बढ़ें और कोर को एक पैच जमा करें। एक सार्थक सुधार की तरह लगता है ... तब, एक साइडबार को पंजीकृत करते समय, एक जोड़ा परम एक स्थान निर्दिष्ट करना होगा। यदि कोई निर्दिष्ट नहीं है, तो यह मान लिया गया है कि यह अब (दाईं ओर) संरचित है
टेलर डेवी

जवाबों:


7

यदि आप अपने वर्डप्रेस को 3.3.1 में अपग्रेड करते हैं, जो आपको बिल्कुल चाहिए, तो व्यवस्थापक के प्रत्येक विजेट क्षेत्र में अब एक आईडी है जिसे आप CSS के माध्यम से लक्षित कर सकते हैं, जो वास्तव में पर्याप्त होना चाहिए। एक उदाहरण के लिए http://core.trac.wordpress.org/ticket/18334 देखें ।


4

मुझे अपने सिर से प्रश्न नहीं मिल सकता है, लेकिन मेरे पास पूर्ण समाधान के लिए समय नहीं है। इसलिए मैं सिर्फ अपना विचार यहाँ लिखता हूँ, फिर मैं एक छोटा सा इनाम रखूँगा।

  • वहाँ एक क्रिया है 'widgets_admin_page'में wp-admin/widgets.phpअन्य सामग्री के ऊपर। आप यहां एक पूर्वावलोकन बॉक्स रख सकते हैं।
    नमूना कोड:

    add_action( 'widgets_admin_page', 'show_widget_preview' );
    function show_widget_preview()
    {
        $preview_widgets = $GLOBALS['wp_registered_sidebars'];
        unset ( $preview_widgets['wp_inactive_widgets'] );
    
        print '<div style="border:2px solid #ddf;padding:20px">'
        . '<pre>' . htmlspecialchars( print_r( $preview_widgets, TRUE ) ) . '</pre>'
        . '</div>';
    }

    यह सभी पंजीकृत साइडबार की एक सरणी प्रिंट करता है। आपको पंजीकृत विजेट खोजने के लिए सभी साइडबार से गुजरना होगा।

  • पूर्वावलोकन को उपयोगी बनाने के लिए आपको दो फ़ाइलों की आवश्यकता होती है: एक HTML टेम्पलेट और एक स्टाइल शीट।
    मैं उपयोग करूंगा add_theme_support()
    थीम के लिए नमूना कोड functions.php:

    add_theme_support( 
        'widget_preview', 
        array ( 
            'template'   => get_stylesheet_directory() . '/widget-preview.php', 
            'stylesheet' => get_stylesheet_directory() . '/widget-preview.css' 
        ) 
    );
  • में show_widget_preview()आप शैली पत्रक enqueue और टेम्पलेट लोड। में पूर्वनिर्धारित प्लेसहोल्डर्स में पंजीकृत साइडबार रेंडर करें widget-preview.php

  • उपयोगकर्ता द्वारा विजेट में सेव बटन दबाने के बाद AJAX प्रति टेम्पलेट अपडेट करें

  • चुनौतियां: खाते, छोटी खिड़कियां और सीएसएस संघर्षों में पहुंच मोड लें। कोई साइडबार पंजीकृत होने पर एक उपयोगी संदेश दिखाएं (साइडबार विवरण?)। जब उपयोगकर्ता किसी विजेट को पूर्वावलोकन बॉक्स में खींचने का प्रयास करता है, तो क्या होना चाहिए? :)


इसके बारे में सोचने के लिए धन्यवाद, @toscho! मैं वर्तमान में अन्य परियोजनाओं पर काम कर रहा हूं, लेकिन इसे वापस लेना होगा, और मैं आपके समाधान की जांच करूंगा और आपको बताऊंगा। एक बार फिर धन्यवाद!
ली कोहेन

0

संक्षिप्त उत्तर यह है कि आप कोर को छुए बिना नहीं कर सकते।

हालाँकि, आप register_sidebar फ़ंक्शन में प्रत्येक विजेट क्षेत्र (विजेट क्षेत्र शीर्षक के नीचे पाठ) का विवरण सेट कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.