Genesis:如何在侧边栏之后和内容栏换行之前添加内容

时间:2016-07-25 作者:ExcellentSP

Fail #1: 钩子,genesis_after_content, 允许我直接在<main> 标记和之前<aside> 标签因此,在内容优先、边栏第二的配置中,它将如下所示:

<div class="content-sidebar-wrap">
    <main></main>
    <div class="custom-content"></div>
    <aside></aside>
</div>
Fail #2: 钩子,genesis_after_content_sidebar_wrap, 允许我在的父容器外部插入内容<main><aside>. 因此,对于相同的内容侧栏配置,如下所示:

<div class="content-sidebar-wrap">
    <main></main>
    <aside></aside>
</div>
<div class="custom-content"></div>
Fail #3: 使用“genesis\\u after\\u sidebar\\u widget\\u区域”也无法工作,并导致此配置:

<div class="content-sidebar-wrap">
    <main></main>
    <aside>
        <div class="custom-content"></div>
    </aside>
</div>
Summary: 我找不到允许我在结束前添加内容的挂钩content-sidebar-wrap 标记,并在结束后<aside> 标签我将如何实现这一点

<div class="content-sidebar-wrap">
    <main></main>
    <aside></aside>
    <div class="custom-content"></div>
</div>

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

如果你进去看看lib/structure/layout.php, 在底部,您将看到:

add_action( \'genesis_after_content\', \'genesis_get_sidebar\' );
/**
 * Output the sidebar.php file if layout allows for it.
 *
 * @since 0.2.0
 *
 * @uses genesis_site_layout() Return the site layout for different contexts.
 */
function genesis_get_sidebar() {
    $site_layout = genesis_site_layout();
    //* Don\'t load sidebar on pages that don\'t need it
    if ( \'full-width-content\' === $site_layout )
        return;
    get_sidebar();
}
这会在默认优先级为10的情况下将侧栏添加到genesis_after_content.

因此,如果您想在侧边栏之后,但在内容侧边栏包装的结束标记之前,将代码挂接到稍后的优先级中,例如。

add_action( \'genesis_after_content\', \'gmj_add_custom_div\', 15 );
/**
 * Output a custom section, after primary sidebar, but still inside the content-sidebar-wrap.
 *
 * @link http://wordpress.stackexchange.com/questions/233093/genesis-how-to-add-content-after-aside-and-before-the-content-sidebar-wrap
 */
function gmj_add_custom_div() {
    ?>
    <div class="custom-content"></div>
    <?php
}
这与您的失败#1之间的重要区别是优先级为15。

SO网友:Michael Neely

我在一次搜索中找到了这篇文章,以了解我如何为正在从事的客户项目实现这一点。以下是对我有效的解决方案,然后使用CSS定位侧栏:

// Adds the sidebar inside the main content area
add_action(\'genesis_before\', \'mn_sidebar_entry_content\');
function mn_sidebar_entry_content() {
    remove_action(\'genesis_sidebar\', \'genesis_do_sidebar\');
    add_action(\'genesis_entry_content\', \'genesis_do_sidebar\');
}`
但是,如果您只是想与背景匹配,并将侧边栏放在一边,则可以:

    .site-inner .wrap{ background-color: #fff; }

相关推荐

OOP development and hooks

我目前正在为Wordpress编写我的第一个OOP插件。为了帮助我找到一点结构,a boiler plate 这为我奠定了基础。在里面Main.php 有一种方法可以为管理员加载JS和CSS资产:/** * Register all of the hooks related to the admin area functionality * of the plugin. * * @since 0.1.0 * @access private