我需要以编程方式在基于WP页面的自定义页面模板中显示我自定义的小部件.
这是场景:
我创建了基于名为"产品"的自定义页面模板的页面,现在我需要在其侧边栏中显示我自定义的小部件.我需要这个侧栏与其他页面完全不同这就是我想以编程方式显示它的原因.我试图使用the_widget()函数,但我认为它仅适用于内置小部件,而且我不知道如何将注册了register_sidebar函数的参数传递给它,因为它似乎默认不使用它们.
实际上我使用了这个:the_widget('WP_Widget_Search')来测试它,widget就在那里,但它忽略了主题设置,我的意思是在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">'
) );
Run Code Online (Sandbox Code Playgroud)
所以我说我不知道它是否适用于自定义小部件(在插件中创建),因为我不知道如何在那里传递小部件名称和params.怎么做?
使用动态创建窗口小部件的动态实例the_widget(),例如:
<div id="xxx" class="widget-area" role="complementary">
<div id="sidebar-dyn">
<?php the_widget( 'WP_Widget_Recent_Posts' ); ?>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
小智 0
我不太清楚你的问题,但我收集到的信息是:1.你需要注册你的小部件,2.你需要它只显示在产品页面上。
要注册,请将其放在functions.php中(您的函数文件中可能已经有第一行):
<?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">'
));
?>
Run Code Online (Sandbox Code Playgroud)
这将是包含在 sidebar.php 中的代码,以仅在名为“产品”的页面上显示上述内容。
<?php if (is_page('Product')) ;?>
<?php if (function_exists('dynamic_sidebar') && dynamic_sidebar('Product Sidebar')) ;?>
<?php endif; ?>
Run Code Online (Sandbox Code Playgroud)