对于当前的项目,我试图回显保存在主题选项页面中的一行文本。我对用户输入使用wp\\u编辑器功能,而不是文本区域。我使用的代码非常简单:
<?php
break;
case "wysiwyg" :
?>
<tr valign="top">
<th scope="row"><?php echo $value[\'name\']; ?>:</th>
<td>
<?php
if( get_settings($value[\'id\']) != "") {
$settings = stripslashes(get_settings($value[\'id\']));
}else{
$settings = $value[\'std\'];
}
?>
<?php wp_editor($settings,$value[\'id\'],array(\'wpautop\' => true,\'media_buttons\'=>false)); ?>
<br /><?php echo $value[\'desc\']; ?>
</td>
</tr>
<?php break;
?>
我试图通过添加
wpautop => true
.. 当我尝试在所见即所得模式下添加单行文本时,就会出现问题。保存字段时,不会添加段落。重新加载页面后,html视图将更改回WYSIWYG,并且我的所有html标记都已消失。
我试着用wpautop
函数,但这会在insert变量后追加一个空白段落。我的代码如下所示:
<?php echo wpautop(stripslashes($lo_homepage_highlight_1_text)) ;?>
并将返回:
<p>Lorem ipsum (.....) dolor sit amet. Great rich text</p>
<p></p>
我不明白我在这里错过了什么。
SO网友:Ewald
在做了更多的研究之后,我发现我的save函数不能很好地工作。我想我应该申请wpautop
和wptexturize
这些条目。我的保存功能如下所示:
if ( \'save\' == $_REQUEST[\'action\'] ) {
foreach ($options as $value) {
update_option( $value[\'id\'], $_REQUEST[ $value[\'id\'] ] ); }
foreach ($options as $value) {
if( isset( $_REQUEST[ $value[\'id\'] ] ) ) { update_option( $value[\'id\'], $_REQUEST[ $value[\'id\'] ] ); } else { delete_option( $value[\'id\'] ); } }
header("Location: themes.php?page=functions.php&saved=true");
die;
}
因为wp\\u编辑器在数组中定义为
wysiwyg
我应该能够获取get请求,以确定该字段是否从wp\\U编辑器发送。我将代码调整为,现在它可以工作了:
if ( \'save\' == $_REQUEST[\'action\'] ) {
foreach ($options as $value) {
if ($_REQUEST[$value[\'type\']] == \'wysiwyg\' ) {
update_option( $value[\'id\'], wpautop(wptexturize($_REQUEST[ $value[\'id\'] ] )));
} else {
update_option( $value[\'id\'], $_REQUEST[ $value[\'id\'] ] );
}
foreach ($options as $value) {
if( isset( $_REQUEST[ $value[\'id\'] ] ) ) {
if($_REQUEST[$value[\'type\']] == \'wysiwyg\') {
update_option( $value[\'id\'], wpautop(wptexturize($_REQUEST[ $value[\'id\'] ] )));
}
else {
update_option( $value[\'id\'], $_REQUEST[ $value[\'id\'] ] );
}
} else {
delete_option( $value[\'id\'] );
}
}
}
header("Location: themes.php?page=functions.php&saved=true");
die;
}
代码可能会有一些改进,但目前仍有效:)