在WordPress中通过metabox选择动态侧边栏

时间:2014-03-29 作者:amitabhaghosh197

我正在开发一个wordpress主题,其中有3个侧框。我想通过我的管理页面中的metabox选择一个侧栏,以便特定的侧栏显示在前端。

我的代码是:-

在功能中

array(
                \'name\'    => __( \'Select Sidebar\', \'cmb\' ),
                \'desc\'    => __( \'Select Your sidebar\', \'cmb\' ),
                \'id\'      => $prefix . \'test_select\',
                \'type\'    => \'select\',
                \'options\' => array(
                    array( \'name\' => __( \'sidebar-1\', \'cmb\' ), \'value\' => \'sidebar-1\', ),
                    array( \'name\' => __( \'sidebar-2\', \'cmb\' ), \'value\' => \'sidebar-2\', ),
                    array( \'name\' => __( \'sidebar-3\', \'cmb\' ), \'value\' => \'sidebar-3\', ),
                ),
            ),
在我的主题文件中:-

<?php get_sidebar(); ?>
在我的侧边栏中。php

 <?php do_action( \'before_sidebar\' ); ?>
        <?php 

           global $post;

           $sidebar = get_post_meta($post->ID, \'_cmb_test_select\', true); ?>


        <?php if ( $sidebar != \'sidebar-1\' ) :  ?>

                 <?php ! dynamic_sidebar( $sidebar = \'sidebar-1\');  ?>
  <div></div>

<?php  elseif( $sidebar != \'sidebar-2\') : ?>

         <?php  ( ! dynamic_sidebar( \'sidebar-2\' )) ?>
          <aside>


          </aside>

          <?php  elseif( $sidebar != \'sidebar-3\')   :?>

          <?php  ( ! dynamic_sidebar( \'sidebar-3\' )) ?>

          <aside>


          </aside>





        <?php endif; ?>
但是,当我在管理页面中选择相关侧栏时,相同的侧栏不会显示在前端。请帮我找出哪里出了问题

提前谢谢。

1 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

您的代码似乎有点多余;我很确定您可以将其压缩为:

<?php

do_action( \'before_sidebar\' );

if ( ! $sidebar = get_post_meta( get_the_ID(), \'_cmb_test_select\', true ) )
    $sidebar = \'sidebar-1\'; // Default sidebar if meta value does not exist.

if ( ! dynamic_sidebar( $sidebar ) ) : ?>

    <!-- No widgets for selected sidebar, display any default content here. --> 

<?php endif ?>

结束

相关推荐

为自定义字段创建Metabox

我使用自定义字段将视频添加到WordPress帖子的视频格式中。我想知道是否有任何方法可以在post editor中为特定的自定义字段创建一个元框(如摘录或其他内容)。只需要一个文本区域来添加iframe代码。例如,自定义字段是嵌入视频。