私はプラグインを使ってさまざまな調整を行い、機能を追加してきました。
関連するダウンロードを含むページを作成するためにカスタム投稿タイプを使用します。あなたがこれらの新しいダウンロードを作成することを可能にする管理領域には、あなたがダウンロードのための説明を追加/編集することを可能にするボックスがあります。これはレンダリングされたページの本文コンテンツとして機能します。
ただし、管理ページには次のコードで作成された標準しかありません。
public function display_sdm_description_meta_box($post) { // Description metabox
_e('Add a description for this download item.', 'sdm_lang');
echo '<br /><br />';
$old_description = get_post_meta($post->ID, 'sdm_description', true);
?>
<textarea id="sdm_description" name="sdm_description" style="width:60%;height:100px;"><?php echo $old_description; ?></textarea>
<?php
wp_nonce_field('sdm_description_box_nonce', 'sdm_description_box_nonce_check');
}
エンドユーザーが通常のページや投稿と同じようにページ/ボディコンテンツを作成できるように、典型的なWPエディタ機能を提供するためにこれが必要でした。その結果、私がここにSOに投稿した別の質問を通して以下のコードを与えられました。
$old_description = get_post_meta($post->ID, 'sdm_description', true);
$editor_id = 'sdm_description';
$settings = array( 'media_buttons' => false );
wp_editor($ old_description、$ editor_id、$ settings);
だから私は今持っています。
public function display_sdm_description_meta_box($post) { // Description metabox
_e('Add a description for this download item.', 'sdm_lang');
echo '<br /><br />';
$old_description = get_post_meta($post->ID, 'sdm_description', true);
//adds TinyMCE capabilities
$editor_id = 'sdm_description';
$settings = array( 'media_buttons' => false );
wp_editor( $old_description , $editor_id, $settings );
?>
<!--<textarea id="sdm_description" name="sdm_description" style="width:60%;height:500px;"><?php echo $old_description; ?></textarea>-->
<?php
wp_nonce_field('sdm_description_box_nonce', 'sdm_description_box_nonce_check');
}
これにより、管理セクションにtinyMCEエディタが表示されます。しかし、Enterキーを押してコンテンツに新しい行を追加すると、フロントエンドでは
としてレンダリングされるだけです。複数の 'enter'は単により多くのスペースをもたらしますが、改行や<br/>
と同等のものは決してありません。
コンテンツが期待どおりに出力されないのはなぜですか。どうすれば修正できますか?
前もって感謝します!
- - - 追加情報
TinyMCEエディタの[ツール]> [ソース]ボタンをクリックすると、作成したコンテンツがポップアップウィンドウに表示されます。<p>This is a test</p><p>Another line of testing!!!</p>
ただし、フロントエンド(Webサイトなど)では、ソースコードは次のようになります。 `これはテストです。
テストのもう一つの行!!! `
DBにアクセスすると、データは文字通り次のように格納されていることがわかります。
This is a test
Another line of testing!!!
コメントで述べたように、これはwp_autop()
やthe_content
フィルターに適用される他のフォーマット関数の欠如です。エディタは<p>
タグをまったく保存しませんが、その後の改行はwp_autop()
を介して段落に変換されます。
メタコンテンツの場合は、デフォルトのフィルタを再作成します。私がこれを行うのは、すべてのメタフィールドにapply_filters('the_content', $your_meta_content);
を付けて、20セットのソーシャル共有ボタンを使用するようになったときに、いくつかのプラグインがthe_content
フィルターを介してものを追加するからです。
/*
* Recreate the default filters on the_content
* this will make it much easier to output the meta content with proper/expected formatting
*/
add_filter( 'meta_content', 'wptexturize' );
add_filter( 'meta_content', 'convert_smilies' );
add_filter( 'meta_content', 'convert_chars' );
add_filter( 'meta_content', 'wpautop' );
add_filter( 'meta_content', 'shortcode_unautop' );
add_filter( 'meta_content', 'prepend_attachment' );
add_filter( 'meta_content', 'do_shortcode');
それからあなたが実際にあなたの新しいデータを表示したいところで、あなたは以下を書くべきです:
$description = get_post_meta($post->ID, 'sdm_description', true);
echo apply_filters( 'meta_content', $description );