テンプレートがどのようにマークアップされているかを知らなくても、正確な答えを出すのは難しいですが、これを行う方法は2つあります。プラグイン(拡張カスタムフィールド)を使用するか、投稿したソリューションを使用して、ポストエディタにメタボックスを追加します。
オプション1プラグインは安定しており、設定が可能で、さらにフィールドを追加する必要がある場合は時間を節約できます。
オプション1:使用高度なカスタムフィールド
ダウンロードして自分のサイトからプラグインをインストールします。https://www.advancedcustomfields.com
カスタムフィールドを追加するプラグインを使用します。これらの方向は役立つかもしれない:あなたのコードでこれを必要になりますようhttps://www.advancedcustomfields.com/resources/creating-a-field-group/
がフィールド名を書き留めておきます。 image_placementのようなものを使用することがあります。 などの値を持つ選択ボックスを設定することをお勧めします。、センターおよび右のような値を持つ選択ボックスを設定することをおすすめします。
<?php if(get_option('image_placement') === 'left') : ?>
// Write the markup here when the image be left-aligned
<?php else if(get_option('image_placement') === 'right') : ?>
// Write the markup here when the image should be right-aligned
<?php else : ?>
// Write the markup here when the image should be shown as a banner
<?php endif; ?>
オプション2:
次に、あなたのPHPのテンプレートファイルには、あなたはこのような何かをしたいでしょう
があなたのfunctions.php
に次のコードを追加し、各ポストにカスタムメタボックスを追加します。
:
// add the meta box to the post editor page
function add_image_meta_box($post) {
add_meta_box('image_meta_box', 'Image Placement', 'image_build_meta_box', 'post', 'side', 'low');
}
add_action('add_meta_boxes', 'add_image_meta_box');
// build the front-end for the meta box (shown on the post editor page)
function image_build_meta_box($post) {
wp_nonce_field(basename(__FILE__), 'image_meta_box_nonce');
$image_placement = get_post_meta($post->ID, '_post_image_placement');
?>
<h3>Image Placement URL</h3>
<select name="image_placement">
<option value="left" <?php ($image_placement[0] === 'left') ?; echo 'selected'; ?>>Left</option>
<option value="center" <?php ($image_placement[0] === 'center') ?; echo 'selected'; ?>>Center</option>
<option value="right" <?php ($image_placement[0] === 'right') ?; echo 'selected'; ?>>Right</option>
</select>
<?php
}
// save the setting
function image_save_meta_box_data($post_id) {
// Check the user's permissions.
if (!current_user_can('edit_post', $post_id)) {
return;
}
$image_placement = $_POST['image_placement'];
if(isset($image_placement)){
update_post_meta($post_id, '_post_image_placement', sanitize_text_field($image_placement));
}
}
add_action('save_post', 'image_save_meta_box_data');
これは、このように同じようなマークアップで使用することができ、あなたのポストのそれぞれにフィールドを追加します
<?php $image_placement = get_post_meta($post->ID, '_post_image_placement')[0]; ?>
<?php if($image_placement === 'left') : ?>
// Write the markup here when the image be left-aligned
<?php else if($image_placement === 'right') : ?>
// Write the markup here when the image should be right-aligned
<?php else : ?>
// Write the markup here when the image should be shown as a banner
<?php endif; ?>
私はSOに漠然と疑問を少し出しをお詫び申し上げます、私はへの方向を探していました私はそれをもっと考えて、ポストメタボックスは明らかな方法のように思えました。各ポストに対してカスタムユーザ情報を保存することができます。私はちょっとだけテーマをハックすることに躊躇していました。私は心配する必要はありません。あなたは提案されたオプション2を実装します。 –
Just implあなたのコード@ rideron89を完成させました。ちょうどいくつかのことを締めなければならなかった。 $ image_placement配列をimplodeで文字列に変換しました(管理が簡単でした)。また、