web-dev-qa-db-ja.com

創世記:脇に置いてコンテンツサイドバーの折り返しの前にコンテンツを追加する方法

失敗#1: / genesis_after_contentフックを使うと、<main>タグの直後と<aside>タグの直前にコンテンツを追加できます。つまり、コンテンツを第一に、サイドバーを第二に設定すると、次のようになります。

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

失敗#2: genesis_after_content_sidebar_wrapフックを使うと、<main><aside>の親コンテナの外側にコンテンツを挿入できます。そのため、同じコンテンツサイドバー設定では、次のようになります。

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

失敗#3: /を使用すると、 `genesis_after_sidebar_widget_area 'も機能しなくなり、この設定になります。

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

要約: content-sidebar-wrapタグを閉じる前、および<aside>タグを閉じた後にコンテンツを追加できるようなフックが見つかりません。これを達成するにはどうすればよいでしょうか。

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

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に追加されます。

そのため、サイドバーの後で、content-sidebar-wrapの終了タグの前に来たい場合は、コードを後の優先順位にフックしてください。

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の優先順位です。

1
GaryJ

私が取り組んでいるクライアントプロジェクトでこれを達成する方法を確認するために、この投稿を検索で見つけました。ここに私のために働いた解決策があり、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; }
0
Michael Neely