好的,让我看看我是否可以解释这一点。在wordpress中,我们有一个框来插入一个摘录。我们需要添加第二个摘录框。我没有手动为每个帖子添加自定义字段,而是在管理帖子页面上以元框的形式自动添加自定义字段。
好的,这就是我正在使用这个功能的问题,除了你进入这个领域的任何事情都会失去它的换行。因此,当我们的作者为了保持文本块的格式而对此字段进行控制时,我必须手动将
添加到段落的末尾。
这是我的代码:
function my_create_post_meta_box() {
add_meta_box( 'my-meta-box', 'Second Excerpt', 'my_post_meta_box', 'post', 'normal', 'high' );
}
function my_post_meta_box( $object, $box ) { ?>
<p>
<label for="second-excerpt">
<strong>Second Excerpt With Images for Post List Page</strong>
</label>
<textarea name="second-excerpt" id="second-excerpt" cols="60" rows="4" tabindex="30" style="width: 97%;" wrap="hard"><?php echo wp_specialchars( get_post_meta( $object->ID, 'Second Excerpt', true ), 1 ); ?></textarea>
<input type="hidden" name="my_meta_box_nonce" value="<?php echo wp_create_nonce( plugin_basename( __FILE__ ) ); ?>" />
</p>
<?php
}
function my_save_post_meta_box( $post_id, $post ) {
if ( !wp_verify_nonce( $_POST['my_meta_box_nonce'], plugin_basename( __FILE__ ) ) )
return $post_id;
if ( !current_user_can( 'edit_post', $post_id ) )
return $post_id;
$meta_value = get_post_meta( $post_id, 'Second Excerpt', true );
$new_meta_value = stripslashes( $_POST['second-excerpt'] );
if ( $new_meta_value && '' == $meta_value )
add_post_meta( $post_id, 'Second Excerpt', $new_meta_value, true );
elseif ( $new_meta_value != $meta_value )
update_post_meta( $post_id, 'Second Excerpt', $new_meta_value );
elseif ( '' == $new_meta_value && $meta_value )
delete_post_meta( $post_id, 'Second Excerpt', $meta_value );
}
谢谢,任何帮助都可以。
答案 0 :(得分:4)
在前端模板上使用wpautop功能。像:
<?php $yourvalue = get_post_meta($post->ID, "yourvalue", true);
if ($yourvalue != ""){ ?>
<dt>Consultório:</dt>
<dd><?php echo wpautop( $consultorio, $br = 1 ); ?></dd>
<?php } ?>
答案 1 :(得分:3)
只需在$new_meta_value = ...
之后添加此行:
$new_meta_value = nl2br($new_meta_value);
而不是将您的值与''
进行比较,最好使用empty()
。还有一些比较是不必要的。因此,保存功能的添加/更新/删除部分可以这样写:
if(empty($meta_value)) {
add_post_meta( $post_id, 'Second Excerpt', $new_meta_value, true );
} elseif(empty($new_meta_value)) {
delete_post_meta( $post_id, 'Second Excerpt', $meta_value );
} else {
update_post_meta( $post_id, 'Second Excerpt', $new_meta_value );
}
请注意,即使您的语句只有一行,也始终建议使用花括号。如果/当你必须在if子句中添加另一行时,它会提高可读性并且不会搞砸。
答案 2 :(得分:1)
不要修改保存到数据库的数据。准确保存用户输入的内容。而是在需要显示内容时修改内容。这样,当用户返回编辑字段时,编辑他们放入的内容,而不是您对其内容所做的内容。
使用wpautop
对WordPress应用于后内容字段中输入的原始内容的文本执行相同的翻译,并在请求显示内容时执行此操作。
答案 3 :(得分:0)
好的,我找到了解决问题的另一种方法。谢谢Tatu让我的大脑工作。对于那些正在寻找解决方案的人来说,这就是我所做的:
$new_meta_value = "<p>" . implode( "</p>\n\n<p>", preg_split( '/\n(?:\s*\n)+/', $new_meta_value ) ) . "</p>";