2010-03-30 9 views
6

कोई भी पृष्ठ संपादन स्क्रीन से मुख्य संपादक को हटाने का तरीका जानता है? और सिर्फ सीएसएस के साथ नहीं। मैंने tinymce के साथ कुछ अन्य मेटा बक्से जोड़े हैं और वे मुख्य के साथ टकराते हैं।वर्डप्रेस एडिट पेज स्क्रीन से मुख्य संपादक निकालें

मेरे पास एक कक्षा है जो संपादन स्क्रीन से अन्य मेटा बॉक्स हटा देती है, लेकिन मैं मुख्य संपादक से इस तरह से छुटकारा नहीं पा सकता हूं। मैं कक्षा (लेकिन कोई भाग्य के साथ) में सरणी के लिए 'divpostrich' और 'divpost' जोड़ने की कोशिश की है:

class removeMetas{ 
    public function __construct(){ 
     add_action('do_meta_boxes', array($this, 'removeMetaBoxes'), 10, 3); 
    } 

    public function removeMetaBoxes($type, $context, $post){ 
     /** 
     * usages 
     * remove_meta_box($id, $page, $context) 
     * add_meta_box($id, $title, $callback, $page, $context = 'advanced', $priority = 'default') 
     */ 
     $boxes = array('slugdiv', 'postexcerpt', 'passworddiv', 'categorydiv', 
         'tagsdiv', 'trackbacksdiv', 'commentstatusdiv', 'commentsdiv', 
         'authordiv', 'postcustom'); 

     foreach ($boxes as $box){ 
      foreach (array('link', 'post', 'page') as $page){ 
       foreach (array('normal', 'advanced', 'side') as $context){ 
        remove_meta_box($box, $type, $context); 
       } 
      } 
     } 
    } 
} 

$removeMetas = new removeMetas(); 

मैं भी jQuery के साथ 'divpostrich' शब्द को हटा कोशिश की है। लेकिन यह पता नहीं लगा सकता कि जेएस को काम करने के लिए कहां रखा जाए। जब मैं फ़ायरबग के साथ ब्राउज़र में 'पोस्टडिविच' को हटा देता हूं - मेरे शेष टिनिमस फ़ील्ड सही काम करते हैं।

कोई विचार?

उत्तर

8

जो आप खोज रहे हैं वह वैश्विक $_wp_post_type_features सरणी है।

नीचे यह कैसे इस्तेमाल किया जा सकता

function reset_editor() 
{ 
    global $_wp_post_type_features; 

    $post_type="page"; 
    $feature = "editor"; 
    if (!isset($_wp_post_type_features[$post_type])) 
    { 

    } 
    elseif (isset($_wp_post_type_features[$post_type][$feature])) 
    unset($_wp_post_type_features[$post_type][$feature]); 
} 

add_action("init","reset_editor"); 
+4

क्यों 'if (! Isset ($ _ wp_post_type_features [$ post_type]) 'लाइन? यह कुछ भी नहीं कर रहा है और अगली पंक्ति किसी भी तरह की जांच कर रही है और अगर केवल एसोसिएटिव सरणी में आवश्यक कुंजी होती है तो केवल अनसेट हो जाएगी। – jbx

+1

मैं सहमत हूं, इसकी आवश्यकता नहीं है, बस इसकी आवश्यकता है: अगर (जारीकर्ता ($ _ wp_post_type_features [$ post_type] [$ सुविधा])) अनसेट ($ _ wp_post_type_features [$ post_type] [$ सुविधा]); – gray

0

क्या आप HTML संपादक को छोड़कर, TinyMCE संपादक को अक्षम नहीं कर सकते, क्योंकि आपके मेटा बॉक्स इसके साथ टकरा रहे हैं? :)

+0

नहीं, जो मेरे अन्य मेटा बॉक्स पर भी TinyMCE को अक्षम कर देगा। और मैं उन लोगों को चाहता हूं :) – ugreen

24

इस के लिए WP समर्थन में बनाया गया है, ताकि आप वैश्विक के साथ सीधे बेला और अगर वे कभी परिवर्तन आगे संगतता सुनिश्चित करने के जरूरत नहीं है की एक त्वरित उदाहरण है कैसे सुविधाओं को संभाला जाता है। WP कोर कोड @ user622018 के रूप में काफी ठीक उसी तर्क तथापि

function remove_editor() { 
    remove_post_type_support('page', 'editor'); 
} 
add_action('admin_init', 'remove_editor'); 
+0

संक्षिप्तता के लिए +1 – Fluoxetine

+6

नोट : इसे चुनिंदा रूप से करने के लिए, विशेष पृष्ठों के लिए, आपको बाद में कुछ हुक करने की आवश्यकता है। वैश्विक '$ पोस्ट' ऑब्जेक्ट 'admin_init' पर उपलब्ध नहीं है। मैंने' admin_head' का उपयोग केवल होम पेज के लिए संपादक को अक्षम करने के लिए किया है –

0

का जवाब है संपादक आप अपने wp-config.php फ़ाइल को संपादित और शीर्ष करने के लिए इस लाइन जोड़ने की आवश्यकता होगी अक्षम करने के लिए:

define('DISALLOW_FILE_EDIT', true); 
+0

यह स्थिरता थीम/प्लगइन संपादक का उपयोग होने से रोकती है, लेकिन पृष्ठ संपादक स्क्रीन पर इसका कोई प्रभाव नहीं पड़ता है। –

2

अपने कार्यों में निम्नलिखित कोड जोड़ें।

function remove_editor_init() { 
if (is_admin()) { 
    $post_id = 0; 
    if(isset($_GET['post'])) $post_id = $_GET['post']; 
    $template_file = get_post_meta($post_id, '_wp_page_template', TRUE); 
    if ($template_file == 'page-home.php') { 
     remove_post_type_support('page', 'editor'); 
    } 
} 
} 
add_action('init', 'remove_editor_init'); 
संबंधित मुद्दे