【问题标题】:Wordpress Widget Disappears on saveWordpress 小部件在保存时消失
【发布时间】:2013-08-08 20:44:04
【问题描述】:

在查看了一些教程后,我创建了一个自定义主题,但在保存/显示小部件时遇到了一些问题。每当我在管理面板中拖放一个小部件时,如果我刷新页面,它就会消失并且什么也没有显示。我已经用谷歌搜索了几个小时,但我并不接近。希望这里有人看到同样的问题

一旦我从管理页面保存并重新加载,这个区域总是显示为空(也没有任何小部件处于活动状态)

我检查过的东西:

  1. 验证 ID 不在大写字母中
  2. 验证 包含在 page.php 中
  3. 禁用所有插件
  4. 将主题切换到 wordpress 默认以确认小部件确实在工作
  5. 启用辅助功能模式(保存后不显示)
  6. 验证最新版本的 Jquery

我已将其包含在我的 functions.php 中:

// Register Widget
function ecma_widgets_init() {
    register_sidebar( array(
        'name'          => __( 'Main Widget Area', 'ecma' ),
        'id'            => 'custom1',
        'description'   => __( 'Appears in the footer section of the site.', 'ecma' ),
        'before_widget' => '<div>',
        'after_widget'  => '</div>',
        'before_title'  => '<h3 class="blue">',
        'after_title'   => '</h3>',
    ) );

    register_sidebar( array(
        'name'          => __( 'Secondary Widget Area', 'ecma' ),
        'id'            => 'custom2',
        'description'   => __( 'Appears on posts and pages in the sidebar.', 'ecma' ),
        'before_widget' => '<div>',
        'after_widget'  => '</div>',
        'before_title'  => '<h3 class="blue">',
        'after_title'   => '</h3>',
    ) );
}
add_action( 'widgets_init', 'ecma_widgets_init' );

Sidebar.php

<?php
/**
 * The sidebar containing the secondary widget area, displays on posts and pages.
 *
 * If no active widgets in this sidebar, it will be hidden completely.
 *
 */

if ( is_active_sidebar( 'home_right_sidebar' ) ) : ?>
            <div id="sidebar">
                <?php dynamic_sidebar( 'custom1' ); ?>
            </div><!-- .widget-area -->
<?php endif; ?>         

【问题讨论】:

  • 您是否在将小部件拖放到小部件区域后点击了保存? :) 我在 2013 年默认安装 3.6 时将您的代码复制粘贴到 functions.php 文件中,它工作得很好。
  • 是的,我也在小部件上点击了保存 :)。我从头开始构建主题,所以我一定在某处遗漏了一些东西
  • 我建议使用下划线作为自定义主题的启动器:underscores.me
  • 我花了几天时间从头开始构建这个主题,但我会检查下划线。谢谢
  • 安德鲁,您可以发布您的回复作为信用答案。我使用了它们的启动器,并且能够非常轻松地集成我的 CSS 和 HTML。谢谢先生,我的小部件现在可以工作了

标签: wordpress


【解决方案1】:

我发现 $control_ops['id_base'] 和 parent::__construct() 的第一个参数应该是相同的。

class MostRecentWidget extends WP_Widget {

    public function __construct() {
        $widget_ops = array(
            'classname' => 'most-recent-widget',
            'description' => 'Displays Most Recent in sidebar'
        );
        $control_ops = array(
            'id_base' => 'most-recent-widget'
        );
        parent::__construct('most-recent-widget', 'Most Recent Widget', $widget_ops, $control_ops);
    }
}

【讨论】:

    【解决方案2】:

    虽然可以从头开始编写主题,但在我看来,使用 underscores 这样的入门主题一定更容易。这样一来,大部分基本结构都得到了处理,并且您可以确保任何破坏的都是您在其上添加的额外代码,从而使故障排除变得更加容易。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-28
      • 2023-04-01
      • 1970-01-01
      • 2016-08-03
      • 1970-01-01
      • 2013-09-09
      • 2013-08-01
      相关资源
      最近更新 更多