2012-06-05 14 views
7

में सीएसएस जोड़ें मैंने एक साधारण प्लगइन लिखा जो wp_options का उपयोग करके कुछ सीएसएस कोड सेट करता है। यह सब इस तरह जैसा दिखता है:पीएचपी वर्डप्रेस प्लगइन

add_action('init','easy_style'); 

function easy_style() 
{ 
    ?> 
    <style> 
    #header a { 
     color: <?php echo get_option('topcolor'); ?>; 
     font-size: <?php echo get_option('topsize'); ?>px; 
     <?php 
      if (get_option('topstyle') == "bold") 
      { echo "font-weight: bold;"; echo "font-style: normal;"; } 
      elseif (get_option('topstyle') == "italic") 
      { echo "font-style: italic;"; echo "font-weight: normal;"; } 
      elseif (get_option('topstyle') == "bolditalic") 
      { echo "font-weight: bold;"; echo "font-style: italic;"; } 
      else { echo "font-weight: normal;"; echo "font-style: normal;"; } 
     ?>; 
    } 

    </style> 
    <?php 
} 

अब इस काम करता है, लेकिन अगर मैं अपने "संपर्क प्रपत्र 7" प्लगइन सक्रिय करते हैं, संपर्क फार्म 7 अब और काम नहीं करता। यह कोई मेल नहीं भेज सकता है। तो मुझे लगता है कि मैं क्या करता हूं गलत है। अगर मैं कोड के इस टुकड़े को हटा देता हूं, तो संपर्क फ़ॉर्म फिर से काम करता है ...

मुझे लगता है कि मैं इसे गलत करता हूं क्योंकि सीएसएस को हेडर में लोड करने की आवश्यकता है, नहीं? तो मैंने सोचा कि मैं एक परीक्षण के रूप में क्या करता हूं, हेडर में एक ही कोड डाल दिया जाता है। हालांकि फिर कुछ अन्य सीएसएस (मुझे नहीं पता कि) इन्हें ओवरराइट करता है, इसलिए यह भी काम नहीं करता है।

मुझे लगता है कि शीर्षलेख में सीएसएस कोड जोड़ने के लिए कुछ WP कार्य हैं लेकिन मुझे नहीं पता कि कितना असाधारण है।

कोई विचार?

धन्यवाद

+0

की जांच के संदर्भ भेजने के लिए भूल नहीं है यह उत्तर http://stackoverflow.com/a/38050537/1153703 –

उत्तर

-11

मैं styles.css फाइल में लोड करके मेरी समस्या हल, इसे संपादित करें और दोबारा

+0

आप वास्तव में enqueu शैली का उपयोग करने के लिए स्विच करना चाहते हैं। यह आपके प्लगइन को मजबूत और कम होने की संभावना कम होने जा रहा है जब WP के नए संस्करण आते हैं। – MattK

2

शायद तुम आवश्यकताओं का उपयोग कर रहे कुछ http हेडर भेजने के लिए प्लगइन।

आप init हुक (यहाँ विस्तृत: http://codex.wordpress.org/Plugin_API/Action_Reference/init) का उपयोग कर रहे कब से प्लगइन डेवलपर्स विचार है कि हेडर पहले ही भेजा नहीं कर रहे हैं आप कुछ कार्रवाई चल रहे हैं।

लेकिन चूंकि आप कुछ आउटपुट भेजते हैं (कुछ शैलियों को गूंजते हैं) आप हेडर को जल्द ही भेजना चाहते हैं। मैं आपको एक और हुक का उपयोग करने का सुझाव देता हूं जो आउटपुट शुरू होने के बाद होता है।

अद्यतन: आप wp_enqueue_style समारोह (यहाँ संदर्भ: http://codex.wordpress.org/Function_Reference/wp_enqueue_style) इस्तेमाल कर सकते हैं के रूप में यह प्रदर्शित करने के लिए शैलियों की सिफारिश की तरीका है। आपको केवल उन नियमों को एक सीएसएस फ़ाइल में सहेजने की आवश्यकता है और wp_head फ़ंक्शन को

+0

इससे मुझे समस्या हल करने में मदद मिली! आप सही हैं, "init" समस्या है। मैंने इसे "wp_loaded" में बदल दिया और अब संपर्क फ़ॉर्म फिर से काम करता है। आपका बहुत बहुत धन्यवाद! :) – WtFudgE

+0

लगता है कि मैं गलत था, यह स्थानीय रूप से काम करता था, लेकिन मेरे मेजबान पर मुझे मिलता है: हेडर जानकारी संशोधित नहीं कर सकता है - हेडर पहले ही भेजे गए हैं (आउटपुट /home/gnc0081000/domains/claeysparts.be/public_html/wp-content पर शुरू हुआ /plugins/easy-styler.php:18) /home/gnc0081000/domains/claeysparts.be/public_html/wp-includes/pluggable.php लाइन 866 – WtFudgE

+0

@WtFudgE यह वही बात है, बस त्रुटि संदेश पढ़ें। आप हेडर फ़ंक्शन का उपयोग करने से पहले कुछ प्रिंट कर रहे हैं। यह वही बात है जो मैंने उपरोक्त कहा लेकिन स्क्रिप्ट के एक हिस्से में जिसकी मुझे पहुंच नहीं है, लेकिन त्रुटि संदेश आपको बताता है कि त्रुटि कहां है: /home/gnc0081000/domains/claeysparts.be/public_html/wp- सामग्री/plugins/आसान-styl एर।लाइन 18 – mishu

23

आपकी प्लगइन में सीएसएस जोड़ने का एक सुरक्षित तरीका wp_enqueue_style का उपयोग करना है।

/** 
* Register with hook 'wp_enqueue_scripts', which can be used for front end CSS and JavaScript 
*/ 
add_action('wp_enqueue_scripts', 'prefix_add_my_stylesheet'); 

/** 
* Enqueue plugin style-file 
*/ 
function prefix_add_my_stylesheet() { 
    // Respects SSL, Style.css is relative to the current file 
    wp_register_style('prefix-style', plugins_url('style.css', __FILE__)); 
    wp_enqueue_style('prefix-style'); 
} 

Reference

+0

पर php मैंने एक सीएसएस फ़ाइल को लिखने की कोशिश की और फिर अपने कोड का उपयोग करके इसे पंजीकृत किया। यह सीएसएस फ़ाइल लोड करता है, हालांकि मुझे पहले जैसी ही समस्याएं प्रतीत होती हैं। यह वही है जब मैंने इसे हेडर फ़ाइल में रखा था। – WtFudgE

+0

मैंने देखा कि कुछ सीएसएस कोड काम करता है, लेकिन कुछ नहीं है। उदाहरण के लिए मेनू लिंक पर फ़ॉन्ट आकार और फ़ॉन्ट-वेट काम करते हैं, लेकिन रंग बदलना प्रतीत नहीं होता है। कोई विचार? – WtFudgE

+0

ऐसा इसलिए होगा क्योंकि आपका टेम्पलेट सीएसएस आपके प्लगइन सीएसएस को ओवरराइड कर रहा है। समावेशन और सीएसएस विशिष्टता के क्रम पर एक नज़र डालें: http://www.w3.org/TR/CSS2/cascade.html#specificity – MrCode

-1

बचाने के एक प्लगइन में देव, class ($this)

add_action('wp_enqueue_scripts', array($this,'prefix_add_my_stylesheet')); 
संबंधित मुद्दे