【问题标题】:How to display my wordpress widget programmatically?如何以编程方式显示我的 wordpress 小部件?
【发布时间】:2011-06-03 13:59:02
【问题描述】:

我需要以编程方式在基于 WP 页面的自定义页面模板中显示我的自定义小部件。

这是场景:

我基于名为“产品”的自定义页面模板创建了页面,现在我需要在其侧边栏中显示我的自定义小部件。我需要这个侧边栏与其他页面完全不同,这就是我想以编程方式显示它的原因。 我尝试使用 the_widget() 函数,但我认为它仅适用于内置小部件,而且我不知道如何将使用 register_sidebar 函数注册的参数传递给它,因为它似乎没有默认使用它们。

实际上我使用了这个:the_widget('WP_Widget_Search') 来测试它并且小部件在那里但是它忽略了主题设置,我的意思是function.php中的设置:

register_sidebar( array(
    'name' => 'Sidebar',
    'before_widget' => '<div id="%1$s" class="widget %2$s">',
    'after_widget' => '</div></div>',
    'before_title' => '<h3>',
    'after_title' => '</h3><div class="padder">'
) );

正如我所说,我不知道它是否适用于定制的小部件(在插件中创建),因为我不知道如何在那里传递小部件名称和参数。该怎么做?

【问题讨论】:

    标签: wordpress widget


    【解决方案1】:

    使用the_widget()动态创建小部件的动态实例,例如:

    <div id="xxx" class="widget-area" role="complementary">
        <div id="sidebar-dyn">
            <?php the_widget( 'WP_Widget_Recent_Posts' ); ?>
        </div>
    </div>
    

    【讨论】:

      【解决方案2】:

      为什么需要以编程方式包含自定义小部件。我的意思是您可以简单地创建另一个仅在您的自定义页面模板“产品”上显示的侧边栏

      此外,您需要为您的自定义页面执行此操作,您甚至不需要检查任何条件。只需将此代码放在您的“产品”页面模板文件中的任何位置(您希望显示侧边栏的位置”。

      <?php if (function_exists('dynamic_sidebar') && dynamic_sidebar('Product Sidebar')) ;?>
      

      只需将您的小部件从管理面板拖到此侧边栏即可。

      【讨论】:

        【解决方案3】:

        如果小部件有短代码,请使用以下代码调用它:

        <?php echo do_shortcode( $content ) ?>
        

        【讨论】:

          【解决方案4】:

          你的问题对我来说并不完全清楚,但我收集到的是 1.您需要注册您的小部件和 2.您需要它只显示在产品页面上。

          要注册,把它放在functions.php中(你的functions文件中可能已经有第一行了):

          <?php
          if ( function_exists('register_sidebar') )
          register_sidebar(array(
          'name'=> 'Product Sidebar',
          'before_widget' => '<div id="%1$s" class="widget %2$s">',
          'after_widget' => '</div></div>',
          'before_title' => '<h3>',
          'after_title' => '</h3><div class="padder">'
          ));
          ?>
          

          这将是包含在 sidebar.php 中的代码,以仅在名为“产品”的页面上显示上述内容。

          <?php if (is_page('Product')) ;?>
          <?php if (function_exists('dynamic_sidebar') && dynamic_sidebar('Product Sidebar')) ;?>
          <?php endif; ?>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-04-15
            • 1970-01-01
            • 2017-11-13
            • 1970-01-01
            • 2011-03-13
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多