Wordpress 自定义演示侧边栏未出现在帖子中
Wordpress custom demo sidebar not appearing on posts
以下 php 文件获得自定义演示侧边栏以显示在管理小部件菜单中,但不会显示在实际帖子中(文件位于同名文件夹中,该文件夹位于 WP 文件的插件文件夹中directory) – 将文本小部件添加到自定义侧边栏以进行测试:
<?php
/**
* Plugin Name: Single Post CTA
* Plugin URI: https://github.com/cdils/single-post-cta
* Description: Adds sidebar (widget area) to single posts
* Version: 0.1
* Author: Carrie Dils
* Author URI: https://carriedils.com
* License: GPL v2+
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
* Text Domain: spc
*/
// If this file is called directly, abort
if ( !defined( 'ABSPATH' ) ) {
die;
}
/**
* Load stylesheet
*/
function spc_load_stylesheet() {
if ( is_single() ) {
wp_enqueue_style( 'spc_stylesheet', plugin_dir_url(__FILE__) .'spc-styles.css' );
}
}
// Hook stylesheet
add_action( 'wp_enqueue_scripts', 'spc_load_stylesheet' );
// Register a custom sidebar
function spc_register_sidebar() {
register_sidebar( array(
'name' => __( 'Single Post CTA', 'spc' ),
'id' => 'spcsidebar',
'description' => __( 'Displays widget area on single posts', 'spc' ),
'before_widget' => '<div class="widget spc">',
'after_widget' => '</div>',
'before_title' => '<h2 class="widgettitle spc-title">',
'after_title' => '</h2>',
) );
}
// Hook sidebar
add_action( 'widgets_init', 'spc_register_sidebar' );
// Display sidebar on single posts
function spc_display_sidebar( $content ) {
if ( is_single() ) {
dynamic_sidebar( 'spcsidebar' );
}
return $content;
}
// Add dynamic sidebar
add_filter( 'the content', 'spc_display_sidebar' );
这是与自定义侧边栏文件位于同一文件夹中的关联样式 sheet:
.spc {
background: gray;
color: blue;
}
定制器下的小部件菜单显示“您的主题还有 1 个其他小部件区域,但此特定页面不显示它”。这个 WordPress 指南 https://developer.wordpress.org/themes/functionality/sidebars/ 似乎表明必须在主题或子主题的 functions.php 文件中注册 sidebar/widget,然后创建侧边栏-{name}.php 文件其中以运行 为dynamic_sidebar 函数。是这样吗?我正在使用 Genesis Sample 子主题,切换到 2020 和 2017 wordpress 主题,或者停用所有其他插件都没有解决问题。
错误是挂钩而不是“内容”,使用“the_content”
例如。
add_filter( 'the_content', 'spc_display_sidebar' );
过滤器应为 add_filter( 'the_content', 'spc_display_sidebar' );
。你忘了下划线。
如果您尝试在页面 post 中显示边栏,那么 is_single()
将不起作用。请尝试 is_singular()
。
以下 php 文件获得自定义演示侧边栏以显示在管理小部件菜单中,但不会显示在实际帖子中(文件位于同名文件夹中,该文件夹位于 WP 文件的插件文件夹中directory) – 将文本小部件添加到自定义侧边栏以进行测试:
<?php
/**
* Plugin Name: Single Post CTA
* Plugin URI: https://github.com/cdils/single-post-cta
* Description: Adds sidebar (widget area) to single posts
* Version: 0.1
* Author: Carrie Dils
* Author URI: https://carriedils.com
* License: GPL v2+
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
* Text Domain: spc
*/
// If this file is called directly, abort
if ( !defined( 'ABSPATH' ) ) {
die;
}
/**
* Load stylesheet
*/
function spc_load_stylesheet() {
if ( is_single() ) {
wp_enqueue_style( 'spc_stylesheet', plugin_dir_url(__FILE__) .'spc-styles.css' );
}
}
// Hook stylesheet
add_action( 'wp_enqueue_scripts', 'spc_load_stylesheet' );
// Register a custom sidebar
function spc_register_sidebar() {
register_sidebar( array(
'name' => __( 'Single Post CTA', 'spc' ),
'id' => 'spcsidebar',
'description' => __( 'Displays widget area on single posts', 'spc' ),
'before_widget' => '<div class="widget spc">',
'after_widget' => '</div>',
'before_title' => '<h2 class="widgettitle spc-title">',
'after_title' => '</h2>',
) );
}
// Hook sidebar
add_action( 'widgets_init', 'spc_register_sidebar' );
// Display sidebar on single posts
function spc_display_sidebar( $content ) {
if ( is_single() ) {
dynamic_sidebar( 'spcsidebar' );
}
return $content;
}
// Add dynamic sidebar
add_filter( 'the content', 'spc_display_sidebar' );
这是与自定义侧边栏文件位于同一文件夹中的关联样式 sheet:
.spc {
background: gray;
color: blue;
}
定制器下的小部件菜单显示“您的主题还有 1 个其他小部件区域,但此特定页面不显示它”。这个 WordPress 指南 https://developer.wordpress.org/themes/functionality/sidebars/ 似乎表明必须在主题或子主题的 functions.php 文件中注册 sidebar/widget,然后创建侧边栏-{name}.php 文件其中以运行 为dynamic_sidebar 函数。是这样吗?我正在使用 Genesis Sample 子主题,切换到 2020 和 2017 wordpress 主题,或者停用所有其他插件都没有解决问题。
错误是挂钩而不是“内容”,使用“the_content”
例如。 add_filter( 'the_content', 'spc_display_sidebar' );
过滤器应为 add_filter( 'the_content', 'spc_display_sidebar' );
。你忘了下划线。
如果您尝试在页面 post 中显示边栏,那么 is_single()
将不起作用。请尝试 is_singular()
。