如何在主页上的默认提要之前添加小部件
How to add a widget before default feed on the home page
在我的 Genesis Magazine 专业主题中,我试图在页眉和内容之间添加一个小部件区域。我正在尝试做的事情在这里得到了完美的描述:https://wpsites.net/web-design/add-widget-to-magazine-pro-front-page/ 但它似乎不起作用。当我将新的小部件添加到新的 before-home-top 小部件时,没有任何显示。
我试过用
替换我的 front-page.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();
并且我将以下内容添加到我的 functions.php
genesis_register_sidebar( array(
'id' => 'before-home-top',
'name' => __( 'Before Home Top', 'magazine-pro' ),
) );
我想在其中添加自定义 HTML 小部件,但没有显示任何内容。任何帮助将不胜感激!
您在 functions.php 中注册的侧边栏名称是 before-home-top
。
您的首页代码中有一个条件检查三个侧边栏中的任何一个是否处于活动状态(包含小部件)。你没有看到任何东西的原因是因为 none 这些支票是针对 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' ) ) {
您可能还希望删除任何您不打算注册的边栏。
在我的 Genesis Magazine 专业主题中,我试图在页眉和内容之间添加一个小部件区域。我正在尝试做的事情在这里得到了完美的描述:https://wpsites.net/web-design/add-widget-to-magazine-pro-front-page/ 但它似乎不起作用。当我将新的小部件添加到新的 before-home-top 小部件时,没有任何显示。
我试过用
替换我的 front-page.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();
并且我将以下内容添加到我的 functions.php
genesis_register_sidebar( array(
'id' => 'before-home-top',
'name' => __( 'Before Home Top', 'magazine-pro' ),
) );
我想在其中添加自定义 HTML 小部件,但没有显示任何内容。任何帮助将不胜感激!
您在 functions.php 中注册的侧边栏名称是 before-home-top
。
您的首页代码中有一个条件检查三个侧边栏中的任何一个是否处于活动状态(包含小部件)。你没有看到任何东西的原因是因为 none 这些支票是针对 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' ) ) {
您可能还希望删除任何您不打算注册的边栏。