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()