我正在自定义Atmosphere Pro主题, 这是一个Genesis子主题。 Atmosphere会在其functions.php文件中注销边栏。
我可以注释掉注销侧边栏的行, 但是, 我试图避免触摸主题本身, 而是使用自定义插件覆盖主题。
我不能只做register_sidebar(‘
sidebar’
);
因为否则Wordpress会将其视为全新的侧边栏。
有没有办法过滤掉unregister_sidebar(‘
sidebar’
);
在functions.php中还是重新注册未注册的侧边栏?
作为参考, 这是Atmosphere functions.php文件中需要重写的代码:
// Remove sidebars.
unregister_sidebar( 'sidebar' );
unregister_sidebar( 'sidebar-alt' );
// Remove site layouts.
genesis_unregister_layout( 'content-sidebar' );
genesis_unregister_layout( 'sidebar-content' );
genesis_unregister_layout( 'content-sidebar-sidebar' );
genesis_unregister_layout( 'sidebar-content-sidebar' );
genesis_unregister_layout( 'sidebar-sidebar-content' );
// Force full-width-content layout setting.
add_filter( 'genesis_site_layout', '__genesis_return_full_width_content' );
还有我在插件中的代码:
<
?php
/*
Plugin Name: Atmosphere Pro Theme Sidebars
Plugin URI: https://my.studiopress.com/themes/atmosphere/
Version: 1.0
Author: Rose Fisher
Description: Enables left or right aligned sidebars in the StudioPress Genesis Atmosphere Pro child theme
Text Domain: atmosphere-pro-theme-sidebars
License: GPLv3
*/defined( 'ABSPATH' ) || die( 'No direct access' );
$theme = wp_get_theme( 'atmosphere-pro' );
if ( $theme->
exists() ) { //Check and make sure the theme is set to Atmosphere Pro// Add sidebars back - this currently registers a whole new sidebar as sidebar-1
register_sidebar( 'sidebar' );
function APTS_get_site_layouts_back() {
genesis_register_layout( 'content-sidebar', array(
'label' =>
__('Content/Sidebar', 'genesis'), 'img' =>
get_bloginfo('template_url') . '/lib/admin/images/layouts/cs.gif'
) );
genesis_register_layout( 'sidebar-content', array(
'label' =>
__('Sidebar/Content', 'genesis'), 'img' =>
get_bloginfo('template_url') . '/lib/admin/images/layouts/sc.gif'
) );
}
add_action( 'init', 'APTS_get_site_layouts_back' );
// Force full-width-content layout setting only on front page.
remove_filter( 'genesis_site_layout', '__genesis_return_full_width_content' );
//first remove full widthfunction APTS_full_width_frontpage() {
if ( is_front_page() ){
add_filter( 'genesis_site_layout', '__genesis_return_full_width_content' );
//then add it back only if it's the front page
}
}
add_action ( 'genesis_meta', 'APTS_full_width_frontpage' );
// Add back the sidebar CSS after the Atmosphere CSS (based on the Parallax Pro sidebar CSS)
function APTS_add_sidebar_css() {
if ( !is_front_page() ) {
wp_enqueue_style( 'atmosphere-pro-sidebars', get_stylesheet_directory_uri() .'/css/sidebars.css', array('atmosphere-pro') );
}
}
add_action('init', 'APTS_add_sidebar_css', 99);
}
参考:https://victorfont.com/enable-sidebars-in-atmosphere-pro/
#1问题是register_sidebar(‘ sidebar’ ); 一个人是行不通的。边栏的ID必须明确说明。
创世记使用的ID是’ sidebar’ , 因此代码如下(请注意’ id’ => ’ sidebar’ )-
// Restore the sidebar
function APTS_register_sidebar() {
register_sidebar( array( 'name' =>
__( 'Sidebar', 'theme-slug' ), 'id' =>
'sidebar' ) );
}
add_action( 'wp_loaded', 'APTS_register_sidebar' );
【是否可以重新注册未注册的WordPress侧边栏()】万一它对其他人有用, 这是用于将左右侧边栏还原到” 大气儿童” 主题的完整代码, 并且可以对其进行更改以对其他” 创世纪” 子主题和其他侧边栏执行相同的操作。
<
?php
/*
Plugin Name: Atmosphere Pro Theme Sidebars
Plugin URI: https://my.studiopress.com/themes/atmosphere/
Version: 1.0
Author: Rose Fisher
Author URI: http://www.bespokehosting.space
Description: Enables left or right aligned sidebars in the StudioPress Genesis Atmosphere Pro theme on the blog archive and blog posts.
Text Domain: atmosphere-pro-theme-sidebars
License: GPLv3Atmosphere Pro Theme Sidebars is free software: you can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation, either version 2 of the
License, or any later version.Atmosphere Pro Theme Sidebars is distributed in the hope that it
will be useful, but WITHOUT ANY WARRANTY;
without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.You should have received a copy of the GNU General Public License
along with {Plugin Name}. If not, see {URI to Plugin License}.
*/defined( 'ABSPATH' ) || die( 'No direct access' );
// Check and make sure the theme is set to Atmosphere Pro
$theme = wp_get_theme( 'atmosphere-pro' );
if ( $theme->
exists() ) {
// Restore the sidebar
function APTS_register_sidebar() {
register_sidebar( array( 'name' =>
__( 'Sidebar', 'theme-slug' ), 'id' =>
'sidebar' ) );
}
add_action( 'wp_loaded', 'APTS_register_sidebar' );
// Put the site layout picker back to the theme and post editors
function APTS_get_site_layouts_back() {
genesis_register_layout( 'content-sidebar', array(
'label' =>
__('Content/Sidebar', 'genesis'), 'img' =>
get_bloginfo('template_url') . '/lib/admin/images/layouts/cs.gif'
) );
genesis_register_layout( 'sidebar-content', array(
'label' =>
__('Sidebar/Content', 'genesis'), 'img' =>
get_bloginfo('template_url') . '/lib/admin/images/layouts/sc.gif'
) );
}
add_action( 'init', 'APTS_get_site_layouts_back' );
// Check if the sidebar is actually being used so we don't unneccessarily create sidebar space
if ( is_active_sidebar( 'sidebar' ) ) {// Remove sidebar from homepage and single pages
function APTS_remove_sidebar_from_home() {
if ( is_front_page() || is_page() ) {
remove_action( 'genesis_after_content', 'genesis_get_sidebar' );
// Remove default Genesis sidebar
}
}
add_action( 'genesis_meta', 'APTS_remove_sidebar_from_home' );
// Add the CSS for the sidebar (pulled from Parallax Pro) only on the blog archive and posts
function APTS_add_sidebar_css() {
if ( is_single() || is_home() ) {
wp_enqueue_style( 'atmosphere-pro-sidebars', plugin_dir_url( __FILE__ ) .'css/sidebars.css', array('atmosphere-pro') );
}
}
add_action( 'wp_enqueue_scripts', 'APTS_add_sidebar_css' );
// Force Genesis full-width-content layout setting only on front page.
function APTS_full_width_frontpage() {
remove_filter( 'genesis_site_layout', '__genesis_return_full_width_content' );
//first remove the filter
if ( is_front_page() ) {
add_filter( 'genesis_site_layout', '__genesis_return_full_width_content' );
//then add it back only if it's the front page
}
}
add_action ( 'init', 'APTS_full_width_frontpage' );
}}
推荐阅读
- Laravel Blade的$loop变量在Sage 9视图中可用吗()
- 是否可以在Vue2 Js或React.Js中制作WordPress主题()
- 是否可以从其他服务器托管WordPress数据库
- 在WordPress的出现我的主题没有背景描述它
- 在WordPress中如何以正确的方式编写post mata( [关闭])
- 在woocommerce中,如何在结帐页面上添加参与者列表并在订单详细信息页面中显示
- Linux中dhcp分配地址
- grep文本处理和脚本
- linux文本处理和shell编程