WordPress 自定义演示侧边栏未出现在帖子中

以下 php 文件获取一个自定义演示侧边栏,显示在管理小部件菜单中,但不显示在实际帖子上(文件位于同名文件夹中,该文件夹位于 WP 文件目录中的插件文件夹中) - 将文本小部件添加到自定义要测试的侧边栏:


<?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' );

以下是与自定义侧边栏文件位于同一文件夹中的关联样式表:


.spc {

    background: gray;

    color: blue;

}

定制器下的小部件菜单显示“您的主题有 1 个其他小部件区域,但此特定页面不显示它”。这个 WordPress 指南https://developer.wordpress.org/themes/functionity/sidebars/似乎表明必须在主题或子主题的functions.php 文件中注册侧边栏/小部件,然后创建一个侧边栏-{name}在其中运行dynamic_sidebar 函数的.php 文件。是这样吗?我正在使用 Genesis Sample 子主题,并切换到 2020 年和 2017 年 WordPress 主题,或停用所有其他插件都没有解决问题。


偶然的你
浏览 119回答 2
2回答

潇潇雨雨

过滤器应该是add_filter( 'the_content', 'spc_display_sidebar' );.&nbsp;你忘了下划线。如果您尝试在页面帖子类型中显示侧边栏,那么这is_single()是行不通的。尝试is_singular()一下。

慕勒3428872

Mistack 位于钩子中,而不是“内容”,请使用“the_content”前任。add_filter( 'the_content', 'spc_display_sidebar' );
打开App,查看更多内容
随时随地看视频慕课网APP