অতিরিক্ত TinyMCE সম্পাদক <p> এবং <br> ট্যাগগুলি স্ট্রিপগুলি?


22

ওহে ছেলেরা, আমি কিছু টেক্সারিয়াসে একটি টিনিএমসিএল যুক্ত করেছি যা কাস্টম মেটা বাক্সে প্রদর্শিত হয়। সমস্ত ফরম্যাটিং পুরোপুরি সূক্ষ্মভাবে কাজ করে, এডিটর বাদে সম্পাদকটি সংরক্ষণ করবে না <p>বা <br/>ট্যাগ করবে না । এটি লাইন ব্রেকগুলি সংরক্ষণ করে না।

টিনিএমসিএই এইভাবে সেটআপ করা হয়েছে:

wp_tiny_mce(true, array('editor_selector' => $field['class'] ) );

'<textarea name="', $field['id'], '" class="', $field['class'], '" id="', $field['id'], '" cols="60" rows="8" style="width:97%">', $meta ? esc_html($meta) : $field['std'], '</textarea>';

এবং যে সমস্ত পুরোপুরি সূক্ষ্ম কাজ করে। সমস্ত ট্যাগ <P>এবং <BR>ট্যাগগুলি বাদ দিয়ে বোতামগুলি সূক্ষ্মভাবে কাজ করে ।

আমি নিশ্চিত নই যে পোস্ট মেটা সংরক্ষণের আগে বা পরে সম্পাদক তাদের এড়িয়ে চলেছে কিনা।

ধারনা?


আমি এটি এক উপায়ে কাজ করতে সক্ষম হয়েছি। ফাংশনটি মূল থেকে নকল করে এবং এতে পরিবর্তন 'remove_linebreaks' => trueকরে 'remove_linebreaks' => false। তবে যদি আমি 'remove_linebreaks' => falseসেটিংস অ্যারে নির্দিষ্ট করে ফাংশনে পাস করি তবে এটি কাজ করবে না
পিপ্পিন

@ আর্থার ক্যারোবট হ্যাঁ, এটি আমার জন্যও কৌশলটি করেছে। আসুন দস্তাবেজগুলিতে একটি লিঙ্ক যুক্ত করুন: কোডেক্স.ওয়ার্ডপ্রেস.অর্গ / ফাংশন_পরিচয় / ডাব্লুপটপ বাই!
লুকা রেজেলিন

আমরা একটি খুব অদ্ভুত জিনিস দেখতে পাচ্ছি। যে পোস্টগুলি হস্ত-প্রবেশ করানো / অনুলিপি-আটকানো হয়েছে সেগুলিতে সম্পাদনার বিরতি রয়েছে। আমরা যে পোস্টগুলি আমদানি করেছি সেগুলি সম্পাদনার অধীন লাইন বিরতি উড়িয়ে দেওয়ার সম্পাদক সাপেক্ষে।
জেসিএল 1178

উত্তর:


16

আমি সম্প্রতি এই কাজ পেয়েছিলাম। metanameআপনার মেটা বক্সের নামটি অনুসন্ধান করে প্রতিস্থাপন করা উচিত ।

ফরম্যাটিং বজায় রাখার কীটি wpautop();ডেটা সংরক্ষণের সময় ব্যবহার করা হয়েছিল ।

add_action( 'add_meta_boxes', 'add_metaname_box');

add_action( 'save_post', 'metaname_save');

function add_metaname_box() {
    add_meta_box(
        'metaname_id',
        __( 'metaname text', 'metaname_textdomain'),
        'metaname_custom_box',
        'page'
    );
}

function metaname_custom_box() {
    global $post;
    wp_nonce_field( plugin_basename( __FILE__ ), 'metaname_noncename' );
    $data = get_post_meta($post->ID, 'metaname_custom_box', true);
    echo <<<EOT
    <script type="text/javascript">
jQuery(document).ready(function() {
    jQuery("#metaname_custom_box").addClass("mceEditor");
    if ( typeof( tinyMCE ) == "object" &&
         typeof( tinyMCE.execCommand ) == "function" ) {
        tinyMCE.execCommand("mceAddControl", false, "metaname_custom_box");
    }
});
</script>
    <textarea id="metaname_custom_box" name="metaname_custom_box">$data</textarea>
EOT;
}

function metaname_save($post_id) {
    global $post;

    // Verify
     if ( !wp_verify_nonce( $_POST['metaname_noncename'], plugin_basename(__FILE__) )) {
         return $post_id;
     }
     if ( 'page' == $_POST['post_type'] ) {
         if ( !current_user_can( 'edit_page', $post_id ))
             return $post_id;
     } else {
         if ( !current_user_can( 'edit_post', $post_id ))
             return $post_id;
     }

     $key = 'metaname_custom_box';
    $data = wpautop($_POST[$key]);

     // New, Update, and Delete
     if(get_post_meta($post_id, $key) == "") 
         add_post_meta($post_id, $key, $data, true);
     elseif($data != get_post_meta($post_id, $key, true))
         update_post_meta($post_id, $key, $data); 
     elseif($data == "")
         delete_post_meta($post_id, $key, get_post_meta($post_id, $key, true));        
}

update_post_metaএছাড়াও হবে add_post_metaযদি meta_keyসন্নিবেশিত করা কোন অস্তিত্ব নেই।
vmassuchetto

5

টিনিএমসিএর কাস্টম-কনফিগার করতে আমি যা ব্যবহার করি তা এখানে (একটি পেরড-ডাউন সংস্করণ) রয়েছে:

// http://tinymce.moxiecode.com/wiki.php/Configuration
function cbnet_tinymce_config( $init ) {

    // Don't remove line breaks
    $init['remove_linebreaks'] = false; 

    // Pass $init back to WordPress
    return $init;
}
add_filter('tiny_mce_before_init', 'cbnet_tinymce_config');

আমি ধরে নিয়েছি আপনি ইতিমধ্যে এটি চেষ্টা করেছিলেন?

সম্পাদনা করুন:

আপনার কিছু অন্য কনফিগারেশন পরিবর্তনগুলি অন্তর্ভুক্ত করতে হতে পারে যেমন:

// Convert newline characters to BR tags
$init['convert_newlines_to_brs'] = true; 
// Do not remove redundant BR tags
$init['remove_redundant_brs'] = false;

টিনিএমসিই কনফিগারেশন প্যারামিটারগুলি নিয়ে ঘুরে দেখুন এবং আপনার যে পরিবর্তন করতে হবে তা সন্ধান করুন।


না, আমি এটি ব্যবহার করিনি। আমি কীভাবে আপনার ফাংশন দিয়ে আমার wp_tiny_mce ফিল্টার করব?
পিপ্পিন

কোডটি ড্রপ করুন functions.php
চিপ বনেট

হুম, এটা কাজ করছে না।
পিপ্পিন

আমার সম্পাদনা দেখুন। আপনি সঠিক কনফিগারেশন প্যারামিটারটিকে লক্ষ্য করছেন না।
চিপ বনেট

1
এটি ইতিমধ্যে আবদ্ধ করা উচিত tiny_mce_before_init। অন্য ফাংশন, বা বস্তু ইত্যাদির ভিতরে আপনার এটি নেই, তাই না?
চিপ বেনেট

5

এটি ওয়ার্ডপ্রেসের পরবর্তী সংস্করণগুলিতে কিছুটা পরিবর্তিত হয়েছে বলে মনে হয়। আপনি এখন এই কার্যকারিতাটি এইভাবে অক্ষম করতে পারেন:

add_filter('tiny_mce_before_init', function($init) {
    $init['wpautop'] = false;
    return $init;
}

3

এর জন্য সম্ভবত একটি সহজ কাজ পাওয়া গেছে:

প্রকৃত টেমপ্লেটে, এটি পরিবর্তন করুন:

<?php echo get_the_content());?>

এটি:

<?php echo wpautop(get_the_content());?>

এইভাবে wpautop () টেম্পলেট ভিত্তিতে টেম্পলেটটিতে টিনিএমসিই দ্বারা বিভক্ত ট্যাগগুলি যুক্ত করে।


2

আপনি কেন wp_editorক্ষুদ্রতম রেন্ডার জন্য ওয়ার্ডপ্রেস নতুন ফাংশন ব্যবহার করবেন না । এইভাবে সবকিছু পরিচালনা করা হবে। এবং আপনি যখন ব্যবহারকারীকে সামগ্রীটি দেখান তখন ফিল্টার প্রয়োগ করুন the_content

এটার মত:

$meta = "content of the metabox";
echo apply_filters('the_content', $meta);

ফিল্টারটি the_contentস্বয়ংক্রিয়ভাবে লিঙ্ক ব্রেকগুলিকে <br>এবং তে রূপান্তর করবে <p>


এই প্রশ্নটি পোস্ট করার সময়, wp_editor () ফাংশন উপলব্ধ ছিল না।
পিপ্পিন

1

আর একটি সহজ সমাধান: শর্টকোড ব্যবহার করুন!

এই কোডটি ফাংশন.এফপি-তে রাখুন এবং কনটেন্ট এডিটর - এইচটিএমএল বা ভিজ্যুয়াল - যেখানেই আপনি একটি বিআর ট্যাগ দেখতে চান সেখানে ব্যবহার করুন br

add_shortcode("br", "br_tag");

function br_tag(){
    return("<br/>");                            

}

1

এই যারা ওয়ার্ডপ্রেসের জন্য বিপাক ব্যবহার করেন তাদের জন্য: প্লাগইন নাম: মেটা বক্স প্লাগইন ইউআরআই: ডিলাক্সব্লগটিপস কম / মেটা-বক্স

আমি স্থিতিশীল ক্রিয়ায় / / vendor/meta-box/inc/fields/wysiwyg.php পরিবর্তন করেছি:

static function html( $html, $meta, $field )

//just after the else i have added :
$meta = html_entity_decode($meta); // 
//and solve the problem ;)

- তবে সর্বোত্তম সমাধানটি -

এটিকে ফাংশন.ফ্পে রাখুন, এটি মেটাবক্স প্লাগইন থেকে ফিল্টারটি কল করে:

function meta_wysiwyg_antes_save($meta)
{   
    $meta = html_entity_decode($meta);
    return $meta;
}
add_filter("rwmb_(ID-OF-METABOX-FIELD)_meta", "meta_wysiwyg_antes_save"); //en meta-box.php 194

এখন আপনি আর প্লাগইন আপডেট করতে পারবেন না। ভাল সমাধান নয়।
ফুসিয়া

কিছুটা আরও গঠনমূলক মতামত আছে? :) আমি ফাংশন.ফ্পে এই কোডটি কোথায় রাখতে পারি?
ক্লোদিও

মধ্যে হুক save_postপ্লাগইন আগের এবং একটি পৃথক ফাংশন মান প্রস্তুত?
ফুসিয়া
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.