1

次のコードを使用して、WordPress ページ (管理セクション) にチェックボックスを作成しました。

<?php while($mb->have_fields_and_multi('sidebar-block')): ?>
<?php $mb->the_group_open(); ?>

    <!-- Some more code here for other fields -->

    <p class="checkbox">
    <input name="<?php $metabox->the_name('blue-block'); ?>" type="checkbox" value="1" <?php if ($metabox->get_the_value('blue-block')) echo ' checked="checked"'; ?>>
    <label>Do not use Blue Block for content</label>
    </p>

<?php $mb->the_group_close(); ?>
<?php endwhile; ?>

上記のコードは正常に動作しています。私の質問は、このチェックボックスがメイン Web サイト (フロントエンド) でチェックされているかどうかを確認するにはどうすればよいですか?

以下は、フロントエンドのテンプレートのコードです。

<?php
    $my_meta = get_post_meta($post->ID,'_sidebar_meta',TRUE);
    if ($my_meta['sidebar-block']) {
    foreach ($my_meta['sidebar-block'] as $sidebar)
    {
?>
<div id="aside-blue">
    <?php if ($sidebar['side_heading']) { ?>
        <h2 class="sideheading"><?php echo $sidebar['side_heading']; ?></h2>
    <?php } ?>
    <?php echo apply_filters( 'the_content', $sidebar['side_content'] ); ?>
</div>
<?php } ?>
<?php } ?>

id="aside-blue"チェックボックスがチェックされている場合にのみ追加したい。


私はこれのために次のコードを試しましたが、うまくいきません

<?php
    $my_meta = get_post_meta($post->ID,'_sidebar_meta',TRUE);
    if ($my_meta['sidebar-block']) {
    foreach ($my_meta['sidebar-block'] as $sidebar)
    {
?>

<div <?php if ($sidebar['blue-block'] == 'yes') { ?>id="aside-blue"<?php } ?>>

</div>
<?php } ?>
<?php } ?>
4

1 に答える 1

0

wp_postmetaテーブルで、値がどのように格納されているかを確認してください。チェックボックスを使用すると、値がシリアル化されました。メタ値を使用する前に、おそらくシリアル化を解除する必要があります。

于 2012-09-04T13:08:11.473 に答える