好让我看看,如果我能解释这一权利。在WordPress,我们有一个对话框插入的摘录。我们需要添加第二个摘录框。不用手动添加自定义字段的每一个交我已经把一个函数来在管理后的网页上一个元框的形式自动添加一个自定义字段。

好了,所以这是我遇到这种功能在工作除了,不管你进入到这个领域它失去了它的换行符事实的问题。所以,当我们的作家contrubuting到这个领域,以保持文本块我必须手动点击添加到段落的结尾的格式。

下面是我的代码:

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 );
}

感谢和任何帮助会做。

有帮助吗?

解决方案 4

好吧,我已经找到了另一个解决我的问题。感谢您的大度让我的脑子干活。对于那些谁正在寻找一个解决方案是我做过什么:

$new_meta_value = "<p>" . implode( "</p>\n\n<p>", preg_split( '/\n(?:\s*\n)+/', $new_meta_value ) ) . "</p>";

其他提示

使用wpautop功能上前端模板。像:

<?php $yourvalue =  get_post_meta($post->ID, "yourvalue", true);   
  if ($yourvalue != ""){ ?>
   <dt>Consult&oacute;rio:</dt>
   <dd><?php echo wpautop( $consultorio, $br = 1 ); ?></dd>
<?php } ?>

只需添加这一行$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子句。

不要修改保存到数据库中的数据。保存用户输入什么。当你需要显示它,而不是修改的内容。当用户回来编辑的字段是什么,他们把在编辑这样,不是你做了他们的内容。

当请求用于显示的内容使用wpautop做你的文字相同的翻译是WordPress的适用于内容后字段中输入的原始内容,并做到这一点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top