Как добавить редактор wysiwyg в метаполе Wordpress - PullRequest
20 голосов
/ 16 августа 2010

Я создаю мета-поле для моего пользовательского типа записи. Есть несколько полей, в которых я хотел бы использовать редактор wysiwyg, а не <textarea>. Можно ли добавить несколько редакторов в мета-поле?

Буду очень признателен за вашу помощь!

Большое спасибо. Даша

Ответы [ 8 ]

33 голосов
/ 29 ноября 2013

Вот полный пример кода:

add_action( 'add_meta_boxes',  function() { 
    add_meta_box('html_myid_61_section', 'TITLEEEEE', 'my_output_function');
});

function my_output_function( $post ) {
    $text= get_post_meta($post, 'SMTH_METANAME' , true );
    wp_editor( htmlspecialchars_decode($text), 'mettaabox_ID', $settings = array('textarea_name'=>'MyInputNAME') );
}

add_action( 'save_post', function($post_id) {
    if (!empty($_POST['MyInputNAME'])) {
        $datta=htmlspecialchars($_POST['MyInputNAME']); //make sanitization more strict !!
        update_post_meta($post_id, 'SMTH_METANAME', $datta );
    }
}); 

P.S. ОБЯЗАТЕЛЬНО-рекомендация из моего опыта:

Забудьте о добавлении пользовательских кодов, используйте Дополнительные пользовательские поля , это отлично и упростит вашу жизнь.

27 голосов
/ 10 марта 2012

http://codex.wordpress.org/Function_Reference/wp_editor был, безусловно, самым простым способом, который я нашел, встроенным в Wordpress начиная с 3.3 (так что обновляйте ;-))

3 голосов
/ 20 марта 2012

Но вам нужно заменить представление функцией nl2br (), так как textarea в пользовательских шаблонах имеет проблему с JS toogle, которая удаляет все ваши теги <P> и <br/> и, следовательно, все разрывы строк.

1 голос
/ 29 июля 2015
// for custom post type

function wo_second_editor($post) {

  echo "<h3>Write here your text for the blue box on the right:</h3>";
  $content = get_post_meta($post->ID, 'wo_blue_box' , true ) ;
  wp_editor( htmlspecialchars_decode($content), 'wo_blue_box', array("media_buttons" => false) );
}

add_action('edit_form_advanced', 'wo_second_editor');


function wo_save_postdata($post_id, $post, $update) {

  //...

  if (!empty($_POST['wo_blue_box'])) {
    $data=htmlspecialchars($_POST['wo_blue_box']);
    update_post_meta($post_id, 'wo_blue_box', $data );
  }
}

add_action('save_post', 'wo_save_postdata');


// Theme:

<div class="blue">
  <?php
  $content = get_post_meta(get_the_ID(), 'wo_blue_box' , true );
    $content = htmlspecialchars_decode($content);
    $content = wpautop( $content );
    echo $content;
  ?>
</div>
1 голос
/ 03 апреля 2013

Вы можете использовать текстовый редактор WordPress по умолчанию в метабоксе, используя

add_action( 'edit_page_form', 'my_second_editor' );
function my_second_editor() {
    // get and set $content somehow...
    wp_editor( $content, 'mysecondeditor' );
}
0 голосов
/ 22 июня 2013

Это помогло мне:

http://www.farinspace.com/multiple-wordpress-wysiwyg-visual-editors/

Это в основном создание текстовой области с идентификатором, а затем вызов из js:

tinyMCE.execCommand('mceAddControl', false, 'your_textarea_id');

Надеюсьпомогает!

0 голосов
/ 15 августа 2011

Сначала установите плагин TinyMCE Advanced.Во-вторых, добавьте класс «theEditor» к своей текстовой области следующим образом

<textarea  class="theEditor" name="custom_meta_box"></textarea>

Вот так;)

Набиль

0 голосов
/ 16 августа 2010

Попробуйте плагин шаблона настраиваемого поля http://wordpress.org/extend/plugins/custom-field-template/

...