私のWordpressのカスタムメタボックスにnl2brを追加します
-
18-09-2019 - |
質問
さて、私はこの権利を説明できるなら、私は見てみましょう。ワードプレスでは、抜粋を挿入するボックスを持っています。私たちは、第二の抜粋ボックスを追加する必要があります。代わりに、手動ですべてのポストにカスタムフィールドを追加するので、私は自動的に管理者の投稿ページのメタボックスの形でカスタムフィールドを追加するための機能を配置しています。
わかりましたので、これは私がこの関数は何でもあなたはそれが改行です失い、このフィールドに入力しているという事実を除いて取り組んでいることだ問題です。だから、私たちの作家が、私は手動で段落の最後に
追加する必要があるテキストのブロックの書式設定を維持するために、このフィールドに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ó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
を使用して、