Php 添加自定义Wordpress小部件会使媒体库崩溃
我正在创建一个自定义Wordpress主题,最近媒体库停止工作。我正在使用ACF创建自定义字段,当我想要选择一个图像时,媒体库只会继续加载而不显示任何图像 经过一些调试后,我注意到当删除添加自定义小部件的代码时,一切正常 现在,我的问题是,下面的代码如何影响媒体库的功能Php 添加自定义Wordpress小部件会使媒体库崩溃,php,wordpress,widget,advanced-custom-fields,Php,Wordpress,Widget,Advanced Custom Fields,我正在创建一个自定义Wordpress主题,最近媒体库停止工作。我正在使用ACF创建自定义字段,当我想要选择一个图像时,媒体库只会继续加载而不显示任何图像 经过一些调试后,我注意到当删除添加自定义小部件的代码时,一切正常 现在,我的问题是,下面的代码如何影响媒体库的功能 <!-- This widget is created to display some simple business information like a phone number and an address. I
<!--
This widget is created to display some simple business information like a phone number and an address.
If supplied the widget will also show icons for social medias such as Facebook, Instagram and Twitter.
-->
<?php
class info_widget extends WP_Widget {
function __construct() {
parent::__construct(
// Base ID of your widget
'info_widget',
// Widget name will appear in UI
__('Information Widget', 'wpb_widget_domain'),
// Widget description
array( 'description' => __('Simple widget to display some business information.', 'wpb_widget_domain' ))
);
}
// Creating widget front-end
public function widget($args, $instance) {
// before and after widget arguments are defined by themes
echo $args['before_widget'];
// This is where you run the code and display the output
$phone = __($instance['phone'], 'wpb_widget_domain' );
$address = __($instance['address'], 'wpb_widget_domain' );
$facebook_link = __($instance['facebook_link'], 'wpb_widget_domain' );
$twitter_link = __($instance['twitter_link'], 'wpb_widget_domain' );
$youtube_link = __($instance['youtube_link'], 'wpb_widget_domain' );
?>
<style type="text/css">
.widget_info_widget {
height: 100%;
display: flex;
flex-direction: column;
}
.widget_info_widget .wrapper {
flex-grow: 1;
display: flex;
flex-direction: column;
justify-content: center;
}
.widget_info_widget .wrapper p {
margin: 5px;
}
.widget_info_widget .wrapper a {
color: black;
text-decoration: none;
}
.widget_info_widget .wrapper a:hover {
text-decoration: underline;
}
.widget_info_widget .wrapper .icons {
margin-top: 20px;
}
.widget_info_widget .wrapper .icons .social {
font-size: 30px;
transition: filter 250ms;
color: black;
margin-left: 5px;
margin-right: 5px;
}
.widget_info_widget .wrapper .icons .social:hover {
filter: invert(0.5);
}
</style>
<center class="wrapper">
<p class="phone-number"><?php echo $phone; ?></p>
<p class="address"><a href="https://www.google.se/maps/place/<?php echo $address?>"><?php echo $address; ?></a></p>
<div class="icons">
<?php if (!empty($facebook_link)): ?>
<a class="social" href="<?php echo $facebook_link; ?>"><i class="fab fa-facebook"></i></a>
<?php endif; ?>
<?php if (!empty($twitter_link)): ?>
<a class="social" href="<?php echo $twitter_link; ?>"><i class="fab fa-twitter-square"></i></a>
<?php endif; ?>
<?php if (!empty($youtube_link)): ?>
<a class="social" href="<?php echo $youtube_link; ?>"><i class="fab fa-youtube-square"></i></a>
<?php endif; ?>
</div>
</center>
<?php
echo $args['after_widget'];
}
// Widget Backend
public function form($instance) {
if (isset($instance['phone'] ) ) {
$phone = $instance['phone'];
}
else {
$phone = __('070-123 45 67', 'wpb_widget_domain');
}
if (isset($instance['address'] ) ) {
$address = $instance['address'];
}
else {
$address = __('Templateroad 5', 'wpb_widget_domain');
}
if (isset($instance['facebook_link'] ) ) {
$facebook_link = $instance['facebook_link'];
}
if (isset($instance['twitter_link'] ) ) {
$twitter_link = $instance['twitter_link'];
}
if (isset($instance['youtube_link'] ) ) {
$youtube_link = $instance['youtube_link'];
}
// Widget admin form
?>
<style type="text/css">
.widefat {
margin-bottom: 10px;
}
</style>
<p>
<label for="<?php echo $this->get_field_id('phone'); ?>"><?php _e('Phone:'); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id('phone'); ?>" name="<?php echo $this->get_field_name('phone'); ?>" type="text" value="<?php echo esc_attr($phone); ?>" />
<label for="<?php echo $this->get_field_id('address'); ?>"><?php _e('Address:'); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id('address'); ?>" name="<?php echo $this->get_field_name('address'); ?>" type="text" value="<?php echo esc_attr($address); ?>" />
<label for="<?php echo $this->get_field_id('facebook_link'); ?>"><?php _e('Facebook Link (not required):'); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id('facebook_link'); ?>" name="<?php echo $this->get_field_name('facebook_link'); ?>" type="text" value="<?php echo esc_attr($facebook_link); ?>" />
<label for="<?php echo $this->get_field_id('twitter_link'); ?>"><?php _e('Twitter Link (not required):'); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id('twitter_link'); ?>" name="<?php echo $this->get_field_name('twitter_link'); ?>" type="text" value="<?php echo esc_attr($twitter_link); ?>" />
<label for="<?php echo $this->get_field_id('youtube_link'); ?>"><?php _e('Youtube Link (not required):'); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id('youtube_link'); ?>" name="<?php echo $this->get_field_name('youtube_link'); ?>" type="text" value="<?php echo esc_attr($youtube_link); ?>" />
</p>
<?php
}
// Updating widget replacing old instances with new
public function update($new_instance, $old_instance) {
$instance = array();
$instance['title'] = (!empty($new_instance['title'])) ? strip_tags($new_instance['title']) : '';
$instance['phone'] = (!empty($new_instance['phone'])) ? strip_tags($new_instance['phone']) : '';
$instance['address'] = (!empty($new_instance['address'])) ? strip_tags($new_instance['address']) : '';
$instance['facebook_link'] = (!empty($new_instance['facebook_link'])) ? strip_tags($new_instance['facebook_link']) : '';
$instance['twitter_link'] = (!empty($new_instance['twitter_link'])) ? strip_tags($new_instance['twitter_link']) : '';
$instance['youtube_link'] = (!empty($new_instance['youtube_link'])) ? strip_tags($new_instance['youtube_link']) : '';
return $instance;
}
}
?>
非常感谢您的帮助,我对Wordpress还比较陌生,所以我可能错过了一些明显的东西,但媒体库停止工作似乎很奇怪。。
还应该注意的是,小部件本身工作正常,无论是后端还是前端 我的意思是你的小部件不是问题所在。在媒体后端屏幕上,不要加载小部件。也许您应该锁定在浏览器的控制台内,或者在javascript上下文中获取错误消息。还可以阅读服务器的错误日志以获取有效的错误消息。没关系,我解决了它,显然是.php文件顶部的注释导致了问题。仅供参考,加载媒体库时没有控制台错误,只是没有加载。不管怎样,它现在起作用了!
// Custom info widget
// Register and load the widget
function load_widget() {
register_widget('info_widget');
}
add_action('widgets_init', 'load_widget');
include 'widgets/information_widget.php';