gpt4 book ai didi

Wordpress wp_editor 简码问题

转载 作者:行者123 更新时间:2023-12-03 08:12:22 26 4
gpt4 key购买 nike

我使用 wp_editor 创建了一个前端编辑器,它可以正常工作。

经过测试,我注意到它会删除内容中插入的所有短代码。我调查了这个问题,发现是“ob_”(输出缓冲)移除了它们。如果我删除此输出缓冲,则短代码可以正常显示,但它会破坏我为编辑器创建的功能。

我如何保留下面使用的代码,但修改它以确保显示所有短代码?非常感谢任何帮助/想法,S。

if(!is_feed() && current_user_can( 'manage_network' ) ) :

function ps_add_post_editor($content) {
global $post;
$settings = array(
'wpautop' => true,
'media_buttons' => false
);
$content .= '<div id="content-edit-area" style="display:none;"><form action="" id="page-content-editor-panel" method="post"><span id="ajax_my_post_edit_nonce" class="hidden">' . wp_create_nonce( 'ajax_my_post_edit_nonce' ) . '</span>' . ps_get_wp_editor($post->post_content, 'textarea-' . $post->ID , $settings) . '<input type="submit" id="feesavebtn" value="Save" /></form><a href="#" id="cancelbtn">Cancel</a></div><br><br><div id="loadingmessage"><img src="'.get_template_directory_uri().'/images/loading.gif" /> saving...</div>

<style type="text/css">
#textarea-'.$post->ID.'_ifr, #textarea-'.$post->ID.' { min-height:700px !important; }
</style>

<script type="text/javascript">
jQuery(\'#page-content-editor-panel\').submit(function(){
var pageid = '.$post->ID.';
var content;
var editor = tinyMCE.get(\'textarea-'.$post->ID.'\');
if (editor) {
content = editor.getContent();
} else {
content = jQuery(\'#textarea-'.$post->ID.'\').val();
}
jQuery(\'#content-edit-area\').hide();
jQuery(\'#loadingmessage\').show();
jQuery.post(
ajaxurl,
{
\'action\':\'add_foobar\',
\'nonce\':jQuery(\'#ajax_my_post_edit_nonce\').text(),
\'post_id\':pageid,
\'post_data\':content
},
function(response){
window.location.reload(true);
}
);
return false;
});
</script>';

return $content;
}

function ps_get_wp_editor($content,$textarea,$settings) {
ob_start();
wp_editor($content, $textarea, $settings);
$edior_html_code = ob_get_contents();
ob_end_clean();
return $edior_html_code;
}
add_filter('the_content', 'ps_add_post_editor');

add_action('wp_ajax_add_foobar', 'prefix_ajax_add_foobar');
add_action('wp_ajax_nopriv_add_foobar', 'prefix_ajax_add_foobar');

function prefix_ajax_add_foobar() {
if( wp_verify_nonce( $_REQUEST['nonce'], 'ajax_my_post_edit_nonce' ) ) {
$myfee_post = array();
$myfee_post['ID'] = $_POST['post_id'];
$myfee_post['post_content'] = $_POST['post_data'];
wp_update_post( $myfee_post );
die("This page has now been updated.");
} else {
die("Unable to process your request at this time.");
}
}

endif;

最佳答案

我不得不承认,我不完全确定你的目标是什么,但就其值(value)而言,这似乎对我有用:

remove_filter('the_content', 'do_shortcode', 11);

function ps_get_wp_editor($content,$textarea,$settings = array()) {
ob_start();
wp_editor($content, $textarea, $settings);
$editor_html_code = ob_get_contents();
ob_end_clean();
return $editor_html_code;
}

function ps_add_post_editor($content) {
global $post;

$post_content = $post->post_content;
$content = ps_get_wp_editor($post_content, 'ps-editor-' . $post->ID );
return $content;
}
add_filter('the_content', 'ps_add_post_editor');

function ps_eat_pants() {
return "eat pants has happened";
}
add_shortcode('eat_pants', 'ps_eat_pants');

问题是,如果你想像在后端编辑器中一样编辑短代码,你需要从“the_content”中删除“do_shortcode”过滤器,这样它就不会在显示时运行在前端。

我必须承认,我不知道您发布的代码实际上是如何工作的,我假设它要么打错了,要么断章取意。 =)

我的意思是,您实际上没有为您的函数提供所有必要的参数...

如果您更详细地解释您在做什么可能会有所帮助,但我希望这会有所帮助。

[编辑:哦,那个“eat_pants”东西只是一个测试简码...]

关于Wordpress wp_editor 简码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18508395/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com