Я столкнулся с небольшой ситуацией, которую, надеюсь, можно решить. Моя цель — взять существующий XML-файл с сервера, проанализировать его, а затем вставить его в виде списка в оригинальный редактор WYSIWYG в WordPress, чтобы у владельца сайта был доступный список, когда он пишет новое сообщение. Прямо сейчас у меня есть этот код в моем файле wp-admin / edit-form-advanced.php:
/**
* Fires after the title field.
*
* @since 3.5.0
*
* @param WP_Post $post Post object.
*/
do_action( 'edit_form_after_title', $post );
if ( post_type_supports($post_type, 'editor') ) {
?>
<div id="postdivrich" class="postarea<?php if ( $_wp_editor_expand ) { echo ' wp-editor-expand'; } ?>">
<?php
/** LOAD XML FROM SERVER AND PARSE AS UL INTO EACH NEW WP POST **/
$xml = simplexml_load_file('../my-folder/file.xml');
$product = "<br/><br/><h2 style='text-align:center; color:#003300;'><u>Products Available Now</u></h2><br/><ul style='text-align:center; list-style:none; color:#003300;'>";
foreach( $xml as $value ) {
$product .= "<li>";
$product .= $value->Description .= " $";
$product .= $value->Price .= " / ";
$product .= $value->QtyUnit .= "\n";
$product .= "</li>";
};
?><?php wp_editor($product, 'content', array(
'_content_editor_dfw' => $_content_editor_dfw,
'drag_drop_upload' => true,
'tabfocus_elements' => 'content-html,save-post',
'editor_height' => 300,
'tinymce' => array(
'resize' => false,
'wp_autoresize_on' => $_wp_editor_expand,
'add_unload_trigger' => false,
),
) ); ?>
Хотя это работает, это вызывает пару проблем.
1) Он вводит данные в каждый Редактор WYSIWYG, включая страницы, которых я хотел бы избежать. Содержание должно появляться только в редакторах постов, если это возможно.
2) Это вызывает довольно серьезную ошибку, которая стирает все, кроме списка, каждый раз, когда эта конкретная страница администратора перезагружается. Я не могу ни сохранять черновики, ни редактировать посты или страницы, пока не оставлю эту сессию открытой в браузере во время процесса редактирования.
Не уверен, что эти проблемы могут быть решены, но любая помощь искренне ценится !!
Вам следует никогда не изменяйте файлы WP core. Желательно, чтобы вы обновить или восстановить оригинальные файлы.
То, что вам нужно, может быть достигнуто с помощью этого небольшого плагина:
<?php
/**
* Plugin Name: Default Post Content
*/
add_action( 'load-post-new.php', 'new_post_so_44123076' );
function new_post_so_44123076() {
# Only load if post type not defined (only occurs for Posts)
if( isset($_GET['post_type']) )
return;
add_filter( 'default_content', 'default_content_so_44123076' );
}
function default_content_so_44123076( $content ) {
# Build your own custom content
$content = "My html content.";
return $content;
}
Создайте папку для плагина, поместите код в файл (custom-content.php
) и поместите XML в ту же папку.
Его можно получить так:
$xml = plugins_url( '/file.xml', __FILE__ );
Других решений пока нет …