将 XML 解析为 Wordpress WYSIWYG 编辑器,仅用于帖子
Parse XML into Wordpress WYSIWYG editor ONLY for Posts
我 运行 遇到了一个小问题,希望可以解决。我的目标是从服务器获取现有的 XML 文件,对其进行解析,然后将其作为列表注入到 Wordpress 的原始所见即所得编辑器中,以便网站所有者在编写新的 [=26] 时可以随时使用该列表=].现在,我的 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) 它将数据注入 every 所见即所得编辑器,包括我想避免的页面。如果可能,内容应仅出现在 post 个编辑器中。
2) 它会导致一个非常严重的错误,每当重新加载特定的管理页面时,除了列表之外的任何内容都会被删除。我无法保存任何草稿,也无法编辑 post 或页面,除非我在编辑过程中让该会话在浏览器中保持打开状态。
不确定是否可以解决这些问题,但我们真诚地感谢您的帮助!
你应该never modify WP core files. It's advisable that you update or restore原始文件。
你需要的可以用这个小插件实现:
<?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__ );
我 运行 遇到了一个小问题,希望可以解决。我的目标是从服务器获取现有的 XML 文件,对其进行解析,然后将其作为列表注入到 Wordpress 的原始所见即所得编辑器中,以便网站所有者在编写新的 [=26] 时可以随时使用该列表=].现在,我的 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) 它将数据注入 every 所见即所得编辑器,包括我想避免的页面。如果可能,内容应仅出现在 post 个编辑器中。
2) 它会导致一个非常严重的错误,每当重新加载特定的管理页面时,除了列表之外的任何内容都会被删除。我无法保存任何草稿,也无法编辑 post 或页面,除非我在编辑过程中让该会话在浏览器中保持打开状态。
不确定是否可以解决这些问题,但我们真诚地感谢您的帮助!
你应该never modify WP core files. It's advisable that you update or restore原始文件。
你需要的可以用这个小插件实现:
<?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__ );