如何在主页上的默认提要之前添加小部件

时间:2019-07-18 00:22:46

标签: php wordpress genesis

在《 Genesis Magazine》专业主题中,我试图在标题和内容之间添加小部件区域。我正在尝试做的事情在这里得到了完美的描述:https://wpsites.net/web-design/add-widget-to-magazine-pro-front-page/,但它似乎没有用。当我将新的小部件添加到新的home-top-top小部件中时,什么都没有显示。

我尝试将front-page.php替换为

color

并且我在我的functions.php中添加了以下内容

<?php
/**
 * Magazine Pro.
 *
 * This file adds the front page to the Magazine Pro Theme.
 *
 * @package Magazine
 * @author  StudioPress
 * @license GPL-2.0+
 * @link    http://my.studiopress.com/themes/magazine/
 */

add_action( 'genesis_meta', 'magazine_home_genesis_meta' );
/**
 * Add widget support for homepage. If no widgets active, display the default loop.
 *
 * @since 3.0.0
 */
function magazine_home_genesis_meta() {

    if ( is_active_sidebar( 'home-top' ) || is_active_sidebar( 'home-middle' ) || is_active_sidebar( 'home-bottom' ) ) {

        // Force content-sidebar layout setting.
        add_filter( 'genesis_site_layout', '__genesis_return_content_sidebar' );

        // Add magazine-home body class.
        add_filter( 'body_class', 'magazine_body_class' );

            // Add homepage widgets.
        add_action( 'genesis_before_content_sidebar_wrap', 'before_home_top' );

        // Remove the default Genesis loop.
        remove_action( 'genesis_loop', 'genesis_do_loop' );

        // Add homepage widgets.
        add_action( 'genesis_loop', 'magazine_homepage_widgets' );

    }

}

// Add body class to front page.
function magazine_body_class( $classes ) {

    $classes[] = 'magazine-home';

    return $classes;

}


function before_home_top() {

    genesis_widget_area( 'before-home-top', array(
        'before' => '<div class="before-home-top widget-area">',
        'after'  => '</div>',
    ) );

}

// Output the widget areas for the front page.
function magazine_homepage_widgets() {

    echo '<h2 class="screen-reader-text">' . __( 'Main Content', 'magazine-pro' ) . '</h2>';

    genesis_widget_area( 'home-top', array(
        'before' => '<div class="home-top widget-area">',
        'after'  => '</div>',
    ) );

    genesis_widget_area( 'home-middle', array(
        'before' => '<div class="home-middle widget-area">',
        'after'  => '</div>',
    ) );

    genesis_widget_area( 'home-bottom', array(
        'before' => '<div class="home-bottom widget-area">',
        'after'  => '</div>',
    ) );

}


genesis();

我正在寻找在其中添加自定义HTML小部件的方法,但没有任何显示。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

您在functions.php中注册的侧边栏的名称为before-home-top

您的首页代码中有一个条件,用于检查三个侧边栏中的任何一个是否处于活动状态(包含小部件)。您没有看到任何内容的原因是因为这些检查都不是针对before-home-top的。

您的问题是这一行:

if ( is_active_sidebar( 'home-top' ) || is_active_sidebar( 'home-middle' ) || is_active_sidebar( 'home-bottom' ) ) {

将侧边栏添加到该检查清单:

if ( is_active_sidebar( 'before-home-top' ) || is_active_sidebar( 'home-top' ) || is_active_sidebar( 'home-middle' ) || is_active_sidebar( 'home-bottom' ) ) {

您可能还希望删除所有您不想注册的侧边栏。