इंटरनेट ब्राउज़र की उन्नति के साथ, मैं वेबसाइटों को कोड करते समय SVGS का उपयोग करके खुद को अधिक से अधिक आरामदायक पाता हूं ... विशेष रूप से माउस के लिए, और सरल ग्राफिक्स जिन्हें मक्खी द्वारा प्रतिस्थापित किया जा सकता है।
ऐसा लगता है कि वर्डप्रेस एसवीजीएस का लगभग समर्थन करता है। मैं लगभग कहता हूं क्योंकि:
यह डिफ़ॉल्ट रूप से वर्डप्रेस में एक अनुमत फ़ाइल प्रकार नहीं है। इसलिए आपको SVG अपलोड करने से पहले इसे जोड़ना होगा
आप मीडिया गैलरी में SVG थंबनेल नहीं देख सकते। (नीचे चित्र देखें)
कभी-कभी जब आप इसे एडिटर से जोड़ते हैं (ऐड मीडिया बटन के माध्यम से) तो एडिटर को एसवीजी साइज का पता नहीं चलता, इसलिए हालांकि यह एसवीजी को एक इमेज के रूप में जोड़ता है, जिसकी चौड़ाई और ऊंचाई शून्य है।
जब आप मीडिया अपलोड पॉपअप में से "एडिट इमेज" पर क्लिक करते हैं तो आपको एक संदेश मिलता है जिसमें कहा जाता है कि "इमेज मौजूद नहीं है"। नीचे देखें इमेज
मैं इस सूची में आइटम 1 के साथ ठीक हूं, लेकिन क्या किसी ने पता लगाया है कि एक आइटम 2 3, और 4 को कैसे ठीक किया जाए?
आइटम 1 के बारे में अपडेट करें:
एक नए माइम प्रकार (जैसे एसवीजी) की अनुमति देने के लिए, आप केवल फ़ंक्शन में एक हुक जोड़ सकते हैं
function allow_new_mime_type($mimes) {
$mimes['svg'] = 'image/svg+xml';
return $mimes;
}
add_filter( 'mime_types', 'allow_new_mime_type' );
अब आपको SVG अपलोड करने में सक्षम होना चाहिए। आप इस ट्यूटोरियल में अधिक जानकारी पा सकते हैं । यह केवल आइटम 1 को हल करता है, जैसा कि मैंने पहले उल्लेख किया है, यह मेरे लिए कोई मुद्दा नहीं है (हालांकि मुझे लगता है कि इसे डिफ़ॉल्ट रूप से अनुमति दी जानी चाहिए)।
आइटम 2 के बारे में अपडेट करें:
मैंने कुछ खुदाई की और उस फ़ंक्शन को ट्रैक किया जो यह तय करता है कि लगाव एक छवि है या नहीं। ऐसा लगता है कि यह सब wp में इस फ़ंक्शन के लिए नीचे आता है / पोस्ट.php
/**
* Check if the attachment is an image.
*
* @since 2.1.0
*
* @param int $post_id Attachment ID
* @return bool
*/
function wp_attachment_is_image( $post_id = 0 ) {
$post_id = (int) $post_id;
if ( !$post = get_post( $post_id ) )
return false;
if ( !$file = get_attached_file( $post->ID ) )
return false;
$ext = preg_match('/\.([^.]+)$/', $file, $matches) ? strtolower($matches[1]) : false;
$image_exts = array( 'jpg', 'jpeg', 'jpe', 'gif', 'png' );
if ( 'image/' == substr($post->post_mime_type, 0, 6) || $ext && 'import' == $post->post_mime_type && in_array($ext, $image_exts) )
return true;
return false;
}
जैसा कि आप देख सकते हैं कि इस फ़ंक्शन में परिभाषित मान्य छवि एक्सटेंशन की एक सरणी है। मुझे कोई भी फ़िल्टर दिखाई नहीं देता जिसका उपयोग उस सरणी को संशोधित करने के लिए किया जा सकता है। लेकिन यह एक शुरुआत है ...
मुझे यकीन नहीं है कि आखिरी बयान अगर svgs के लिए गलत है, हालांकि। यहां तक कि अगर मैं सरणी $ image_exts में svg एक्सटेंशन को नहीं जोड़ता हूं, तो पहली शर्त सही होनी चाहिए, क्या नहीं?
if ( 'image/' == substr($post->post_mime_type, 0, 6)
यह जांचता है कि क्या 'छवि /' माइम प्रकार में पहले छह वर्णों के लिए योग्य है, जो कि svg के लिए छवि / svg + xml है (पहले छह में "छवि /" है)।
अपडेट करें
आगे की जाँच करने पर, ऐसा लगता है कि समस्या wp_attachment_is_image के साथ बिल्कुल भी नहीं है, लेकिन क्योंकि SVG अपलोड होने पर छवि के आकार (चौड़ाई और ऊँचाई) को अनुलग्नक मेटाडेटा में नहीं जोड़ा जा रहा है। ऐसा इसलिए है क्योंकि उपयोग की गई छवि की गणना करने का फ़ंक्शन php फ़ंक्शन getimagesize () है, जो एसवीजी के लिए एक छवि आकार नहीं लौटाता है। मुझे स्टिमओवरफ़्लो पर एक उत्तर मिला कि गेटिमेजाइज़ फ़ंक्शन के बारे में और svgs कैसे व्यवहार करते हैं। इसे यहाँ देखें।