我需要对保存在模板inc/classes上的文件进行一些更改。
文件是
<?php
class TheWorld_Tabs_Widget extends WP_Widget {
function __construct() {
// Set up the widget options.
$widget_options = array(
\'classname\' => \'widget-theworld-tabs tabs-widget\',
\'description\' => __( \'Display popular posts, recent posts and tags in tabs.\', \'theworld\' )
);
// Create the widget.
parent::__construct(
\'theworld-tabs\', // $this->id_base
__( \'» Tabs\', \'theworld\' ), // $this->name
$widget_options // $this->widget_options
);
}
function widget( $args, $instance ) {
extract( $args );
// Output the theme\'s $before_widget wrapper.
echo $before_widget;
?>
<ul class="tabs-nav">
<li class="active"><a href="#tab1" title="Popular"><i class="fa fa-thumbs-up"></i></a></li>
<li><a href="#tab2" title="Latest"><i class="fa fa-clock-o"></i></a></li>
<li><a href="#tab3" title="Comments"><i class="fa fa-comment"></i></a></li>
<li><a href="#tab4" title="Tags"><i class="fa fa-tag"></i></a></li>
</ul>
<div class="tabs-container">
<div class="tab-content" id="tab1">
<?php the_widget( \'TheWorld_Popular_Widget\', \'title=0&show_date=1&limit=5\' ); ?>
</div>
<div class="tab-content" id="tab2">
<?php the_widget( \'TheWorld_Recent_Widget\', \'title=0&show_date=1&limit=5\' ); ?>
</div>
<div class="tab-content" id="tab3">
<?php the_widget( \'WP_Widget_Recent_Comments\' ); ?>
</div>
<div class="tab-content" id="tab4">
<?php the_widget( \'WP_Widget_Tag_Cloud\' ); ?>
</div>
</div>
<?php
// Close the theme\'s widget wrapper.
echo $after_widget;
}
/**
* Displays the widget control options in the Widgets admin screen.
*
* @since 1.0.0
*/
function form( $instance ) {
?>
<p><?php _e( \'No need to setting anything for this widget.\', \'theworld\' ); ?></p>
<?php
}
}
我需要换成
<?php
class TheWorld_Tabs_Widget extends WP_Widget {
function __construct() {
// Set up the widget options.
$widget_options = array(
\'classname\' => \'widget-theworld-tabs tabs-widget\',
\'description\' => __( \'Display popular posts, recent posts and tags in tabs.\', \'theworld\' )
);
// Create the widget.
parent::__construct(
\'theworld-tabs\', // $this->id_base
__( \'» Tabs\', \'theworld\' ), // $this->name
$widget_options // $this->widget_options
);
}
function widget( $args, $instance ) {
extract( $args );
// Output the theme\'s $before_widget wrapper.
echo $before_widget;
?>
<ul class="tabs-nav">
<li class="active"><a href="#tab1" title="Popular"><i class="fa fa-thumbs-up"></i></a></li>
<li><a href="#tab2" title="Latest"><i class="fa fa-clock-o"></i></a></li>
<li><a href="#tab4" title="Tags"><i class="fa fa-tag"></i></a></li>
</ul>
<div class="tabs-container">
<div class="tab-content" id="tab1">
<?php the_widget( \'TheWorld_Popular_Widget\', \'title=0&show_date=1&limit=5\' ); ?>
</div>
<div class="tab-content" id="tab2">
<?php the_widget( \'TheWorld_Recent_Widget\', \'title=0&show_date=1&limit=5\' ); ?>
</div>
<div class="tab-content" id="tab4">
<?php the_widget( \'WP_Widget_Tag_Cloud\' ); ?>
</div>
</div>
<?php
// Close the theme\'s widget wrapper.
echo $after_widget;
}
function form( $instance ) {
?>
<p><?php _e( \'No need to setting anything for this widget.\', \'theworld\' ); ?></p>
<?php
}
}
我把这个放在了我的子函数上。php
require get_stylesheet_directory() . \'/inc/classes/widget-tabs.php\';
然后保存到
child-theme/inc/classes/widget-tabs.php
我的编辑文件,但我有错误
致命错误:无法在/home/mysite/public\\html/wp content/themes/world/inc/classes/Widget选项卡中重新声明class TheWorld\\u Tabs\\u小部件。php第0行
SO网友:Cubakos
虽然这是一篇有点老的帖子,但有一些可能的解决方案:
对于您的具体问题,由于我看到的与原始小部件的唯一区别是,您不需要关于最近评论的“tab3”,而且每个div都有自己的id,因此您可以轻松地在css中输入如下内容:
#tab3 {display:none;}
现在,关于小部件的覆盖。
如果您有权访问父主题,可以将小部件包装在If语句中,如:
if(!class_exists(\'TheWorld_Tabs_Widget\')) {
class TheWorld_Tabs_Widget extends WP_Widget {...
...
}
然后,您的小部件将覆盖父小部件,并且不会引发任何错误。
如果您没有访问父主题的权限,您可以通过将名称更改为其他名称(例如:TheWorld\\u Tabs\\u widget\\u Child)对小部件的版本进行小的更改,然后将其用于您的主题或
首先尝试使用unregister_widget()
函数,在子主题函数文件中。这假设父主题中的小部件在widget_init
. 例如:
function some_widget_unregister() {
unregister_widget( \'TheWorld_Tabs_Widget\' );
}
add_action( \'widgets_init\', \'some_widget_unregister\', 99 );