我不知道该如何命名这个问题,所以我道歉。首先让我声明,我没有这类代码的经验,但我真的需要为我的网站提供这一功能,所以我感谢所有人能提供的帮助!
无论如何,我最近得到了一个解决我之前问题的方法,可以在这里找到//
Create Image Uploader for Widget
它工作得很好,但现在的新问题是,我想添加一个“名称”输入和一种显示默认文本的方法,该文本将显示在前端。
我在这里找到了一个教程//
http://wp.tutsplus.com/tutorials/creative-coding/building-custom-wordpress-widgets/
它使用
if ( $name )
printf( \'<p>\' . __(\'Hey their Sailor! My name is %1$s.\', \'example\') . \'</p>\', $name );
显示名称。所以我尝试将其添加到我的函数中。php。
然后想出了这个//
// register sidebar
if (function_exists(\'register_sidebar\')) {
register_sidebar(
array(
\'name\' => \'Left Sidebar\',
\'id\' => \'left-sidebar\',
\'description\' => \'Widget Area\',
\'before_widget\' => \'<div id="one" class="two">\',
\'after_widget\' => \'</div>\',
)
);
}
// register widget
add_action(\'widgets_init\', \'eotw_widget\');
function eotw_widget() {
register_widget( \'eotw_w\' );
}
// add admin scripts
add_action(\'admin_enqueue_scripts\', \'ctup_wdscript\');
function ctup_wdscript() {
wp_enqueue_media();
wp_enqueue_script(\'ads_script\', get_template_directory_uri() . \'/js/ads.js\', false, \'1.0\', true);
}
// widget class
class eotw_w extends WP_Widget {
function eotw_w() {
$widget_ops = array(\'classname\' => \'eotw-w\');
$this->WP_Widget(\'eotw-w-widget\', \'EOTW\', $widget_ops);
}
function widget($args, $instance) {
extract($args);
// widget content
echo $before_widget;
if ( $name )
printf( \'<p>\' . __(\'Hey there Sailor! My name is %1$s.\', \'example\') . \'</p>\', $name );
?>
<img class="eotw-edit" src="<?php echo esc_url($instance[\'image_uri\']); ?>" />
<?php
echo $after_widget;
}
function update($new_instance, $old_instance) {
$instance = $old_instance;
$instance[\'name\'] = strip_tags( $new_instance[\'name\'] );
$instance[\'image_uri\'] = strip_tags( $new_instance[\'image_uri\'] );
return $instance;
}
function form($instance) {
?>
<p>
<label for="<?php echo $this->get_field_id( \'name\' ); ?>"><?php _e(\'Your Name:\', \'example\'); ?></label>
<input id="<?php echo $this->get_field_id( \'name\' ); ?>" name="<?php echo $this->get_field_name( \'name\' ); ?>" value="<?php echo $instance[\'name\']; ?>" style="width:100%;" />
</p>
<p>
<label for="<?php echo $this->get_field_id(\'image_uri\'); ?>">Image</label><br />
<?php
if ( $instance[\'image_uri\'] != \'\' ) :
echo \'<img class="custom_media_image" src="\' . $instance[\'image_uri\'] . \'" style="margin:0;padding:0;max-width:100px;float:left;display:inline-block" /><br />\';
endif;
?>
<input type="text" class="widefat custom_media_url" name="<?php echo $this->get_field_name(\'image_uri\'); ?>" id="<?php echo $this->get_field_id(\'image_uri\'); ?>" value="<?php echo $instance[\'image_uri\']; ?>" style="margin-top:5px;">
<input type="button" class="button button-primary custom_media_button" id="custom_media_button" name="<?php echo $this->get_field_name(\'image_uri\'); ?>" value="Upload Image" style="margin-top:5px;" />
</p>
<?php
}
}
?>
图像显示在前端,因此//
嘿,水手!我的名字是
但显示的不是输入字段中插入的“名称”,而是“左侧边栏”名称。
我不知道如何解决这个问题。所以我的问题是,我哪里做错了?为了正确显示名称输入中的数据而不是侧边栏的名称,我可以修改代码的哪一部分?请帮忙。
SO网友:keilowe
好了,现在可以了。名称输入的数据现在与上载的图像一起显示在前端。我真的无法解释为什么。。。但我基本上只是复制了我发布的教程链接中的一些行,并将其粘贴到它所属的位置,然后一切都开始按它应该的方式工作。
这是新的*代码//
// widget class
class eotw_w extends WP_Widget {
function eotw_w() {
$widget_ops = array(\'classname\' => \'eotw-w\');
$this->WP_Widget(\'eotw-w-widget\', \'Editor of the Week\', $widget_ops);
}
function widget($args, $instance) {
extract($args);
$title = apply_filters(\'widget_title\', $instance[\'title\'] );
$name = $instance[\'name\'];
$image_uri = $instance[\'image_uri\'];
// widget content
echo $before_widget;
if ( $title )
echo $before_title . $title . $after_title;
if ( $name )
printf( \'<p>\' . __(\'This weeks EOTW is %1$s \', \'example\') . \'</p>\', $name );
?>
<img class="eotw-edit" src="<?php echo esc_url($instance[\'image_uri\']); ?>" />
<?php
echo $after_widget;
}
function update($new_instance, $old_instance) {
$instance = $old_instance;
$instance[\'title\'] = strip_tags( $new_instance[\'title\'] );
$instance[\'name\'] = strip_tags( $new_instance[\'name\'] );
$instance[\'image_uri\'] = strip_tags( $new_instance[\'image_uri\'] );
return $instance;
}
function form($instance) {
//Set up some default widget settings.
$defaults = array( \'title\' => __(\'Editor of the Week\', \'example\'), \'name\' => __(\'Bilal Shaheen\', \'example\'));
$instance = wp_parse_args( (array) $instance, $defaults ); ?>
<p>
<label for="<?php echo $this->get_field_id( \'title\' ); ?>"><?php _e(\'Title:\', \'example\'); ?></label>
<input id="<?php echo $this->get_field_id( \'title\' ); ?>" name="<?php echo $this->get_field_name( \'title\' ); ?>" value="<?php echo $instance[\'title\']; ?>" style="width:100%;" />
</p>
<p>
<label for="<?php echo $this->get_field_id(\'name\'); ?>">name</label><br />
<input type="text" name="<?php echo $this->get_field_name(\'name\'); ?>" id="<?php echo $this->get_field_id(\'name\'); ?>" value="<?php echo $instance[\'name\']; ?>" class="widefat" />
</p>
<p>
<label for="<?php echo $this->get_field_id(\'image_uri\'); ?>">Image</label><br />
<?php
if ( $instance[\'image_uri\'] != \'\' ) :
echo \'<img class="custom_media_image" src="\' . $instance[\'image_uri\'] . \'" style="margin:0;padding:0;max-width:100px;float:left;display:inline-block" /><br />\';
endif;
?>
<input type="text" class="widefat custom_media_url" name="<?php echo $this->get_field_name(\'image_uri\'); ?>" id="<?php echo $this->get_field_id(\'image_uri\'); ?>" value="<?php echo $instance[\'image_uri\']; ?>" style="margin-top:5px;">
<input type="button" class="button button-primary custom_media_button" id="custom_media_button" name="<?php echo $this->get_field_name(\'image_uri\'); ?>" value="Upload Image" style="margin-top:5px;" />
</p>
<?php
}
}
?>