gpt4 book ai didi

php - Wordpress 自定义侧边栏,小部件出现在 Aside 标签之外

转载 作者:行者123 更新时间:2023-12-04 01:47:43 32 4
gpt4 key购买 nike

我在 wordpress 中有一个自定义侧边栏,这是 sidebar.php 中的工作代码:

if ( ! is_active_sidebar( 'sidebar-1' ) ) {
return;
}
?>

<aside id="secondary" class="sidebar-area widget-area">
<div class="sidebar-area-wrap">
<?php dynamic_sidebar( 'sidebar-1' ); ?>
</div>
</aside><!-- #secondary -->

我在 functions.php(works) 中添加了选项,所以现在代码如下所示:

if ( ! is_active_sidebar( 'sidebar-1' ) ) {
return;
}

$swag_sidebar_location = get_theme_mod('swag_sidebar_location');
if (isset($swag_sidebar_location) && $swag_sidebar_location=='') {
$swag_sidebar_location ='sidebar-location-none';
}

?>

<?php

if (isset($swag_sidebar_location) && $swag_sidebar_location=='sidebar-location-right' || $swag_sidebar_location=='sidebar-location-left') {
echo '
<aside id="secondary" class="sidebar-area widget-area">
<div class="sidebar-area-wrap">
' . dynamic_sidebar( "sidebar-1" ) . '
</div>
</aside>
';
}

?>

问题是小部件出现在标签外部和之前,数字“1”出现在标签内部。

我猜问题出在这里:'。动态侧边栏(“侧边栏-1”)。 '我不知道 php,只是想弄明白。我该如何解决这个问题?

编辑:HTML 的示例:

<section id="pages-2" class="widget">xxxxxx</section>
<section id="pages-2" class="widget">xxxxxx</section>
<section id="pages-2" class="widget">xxxxxx</section>
<section id="pages-2" class="widget">xxxxxx</section>
<aside id="secondary" class="sidebar-area widget-area sidebar-location-right"> <div class="sidebar-area-wrap"> 1 </div> </aside>

而不是正确地看起来像这样:

<aside id="secondary" class="sidebar-area widget-area sidebar-location-right">           
<div class="sidebar-area-wrap">
<section id="pages-2" class="widget">xxxxxx</section>
<section id="pages-2" class="widget">xxxxxx</section>
<section id="pages-2" class="widget">xxxxxx</section>
<section id="pages-2" class="widget">xxxxxx</section>
</div>
</aside>

编辑:根据要求,我在 functions.php 中注册侧边栏代码

function swagger_widgets_init()
{
register_sidebar(array(
'name' => esc_html__('Sidebar', 'swagger'),
'id' => 'sidebar-1',
'description' => esc_html__('Add widgets here.', 'swagger'),
'before_widget' => '<section id="%1$s" class="widget %2$s">',
'after_widget' => '</section>',
'before_title' => '<h2 class="widget-title"><span class="widget-title-span">',
'after_title' => '</span></h2>'
));
}
add_action('widgets_init', 'swagger_widgets_init');

最佳答案

不错的老式 Wordpress 及其“回显功能”

dynamic_sidebar()返回一个值;它是 echo 的一个。这使得它不适合在字符串中连接,因为它的结果将在字符串评估期间被回显,甚至在您的字符串创建之前将其发送到输出缓冲区。

不幸的是,Wordpress 没有提供此函数的 get_* 版本来返回字符串(但是,请参阅 https://core.trac.wordpress.org/ticket/13169)。

不是连接,而是执行三个单独的调用。例如……

echo '<aside id="secondary" class="sidebar-area widget-area"><div class="sidebar-area-wrap">';
dynamic_sidebar( "sidebar-1" );
echo '</div></aside>';

您也可以使用单个 echo 语句,但不是连接,而是将几个逗号分隔的参数传递给它,例如

echo '<aside id="secondary" class="sidebar-area widget-area"><div class="sidebar-area-wrap">',
dynamic_sidebar( "sidebar-1" ),
'</div></aside>';

另一种选择是坚持使用原始的混合 HTML 和 PHP,包装在 if 条件中。例如

if (isset($swag_sidebar_location) && $swag_sidebar_location=='sidebar-location-right' || $swag_sidebar_location=='sidebar-location-left') : ?>
<aside id="secondary" class="sidebar-area widget-area">
<div class="sidebar-area-wrap">
<?php dynamic_sidebar( 'sidebar-1' ) ?>
</div>
</aside>
<?php endif ?>

参见 http://php.net/manual/control-structures.alternative-syntax.php

关于php - Wordpress 自定义侧边栏,小部件出现在 Aside 标签之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54599479/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com