我正在尝试创建一个自定义小部件,用户可以在其中选择要显示的社交媒体类型,然后输入他的社交网址。
所以我需要能够在选择时选择要显示的多个图像,我还需要能够为这些图像设置一个网址。
我只花了3个小时寻找帮助我的东西但是因为我不是那么精明的PHP,所以我没有比这更进一步;
class SocialWidget extends WP_Widget
{
function SocialWidget()
{
$widget_ops = array('classname' => 'SocialWidget', 'description' => 'Display Social Icons' );
$this->WP_Widget('SocialWidget', 'Social Icons', $widget_ops);
}
function form($instance)
{
$instance = wp_parse_args( (array) $instance, array( 'title' => '' ) );
$title = $instance['title'];
?>
<p><label for="<?php echo $this->get_field_id('title'); ?>">Title: <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo attribute_escape($title); ?>" /></label></p>
<?php
}
function update($new_instance, $old_instance)
{
$instance = $old_instance;
$instance['title'] = $new_instance['title'];
return $instance;
}
function widget($args, $instance)
{
extract($args, EXTR_SKIP);
echo $before_widget;
$title = empty($instance['title']) ? ' ' : apply_filters('widget_title', $instance['title']);
if (!empty($title))
echo $before_title . $title . $after_title;;
// WIDGET CODE GOES HERE
echo "<h1>This is my new widget!</h1>";
echo $after_widget;
}
}
add_action( 'widgets_init', create_function('', 'return register_widget("SocialWidget");') );?>
我通过以下教程学到了这一点。它设置了小部件标题,到目前为止它只显示一条简单的消息,所以我可以看到它的工作原理。
现在,有人能帮助我站稳脚跟吗?当我描述我需要的东西时,听起来很容易,但我仍然找不到如何在任何地方做到这一点。它不是那么简单,我应该留下它还是可行的?
答案 0 :(得分:0)
在开始之前请注意,所有代码都只是在浏览器中输入而未检查。另外,我一直在编写小部件,所以我理解这些东西是如何以及为什么会让人困惑的。因此,我将尝试给您一个非常简短的答案,以便您可以直接复制和粘贴代码。如果您需要更长的答案,请检查Wordpress文档here。
您需要做几件事。为您希望用户能够显示的每个社交媒体网站添加一个新的设置字段(您可以只添加一个作为数组,但这可能对您的级别来说很难)。然后,您需要设置字段来存储与每个社交媒体渠道相关联的网址。您可以通过为每个社交媒体频道设置复选框以供用户显示以及要链接到的网址的关联文本字段来设置它们。
所以就像你的标题一样,添加你想要的所有网址链接
<p><label for="<?php echo $this->get_field_id('url_1'); ?>">Url 1: <input class="widefat" id="<?php echo $this->get_field_id('url_1'); ?>" name="<?php echo $this->get_field_name('url_1'); ?>" type="text" value="<?php echo esc_url($url_1); ?>" /></label></p>
然后添加该行以便保存
$instance['url_1'] = $new_instance['url_1'];
然后在您的小部件功能中添加此项以显示链接
echo '<a target="_blank" href="' . $instance['url_1'] . '">URL 1</a>';
那只是为了获得一个链接显示。复选框和图像需要采取更多步骤,但如果这对您来说太难了,那么您可能不得不离开它。总的来说,对于PHP开发人员来说,这是一项简单的任务,您可以请求开发人员完成任务。
希望一切顺利,
凯尔
答案 1 :(得分:0)
我创建了类似的插件,可以在WordPress插件目录中找到。点击下面的链接查看我的插件: http://wordpress.org/plugins/wens-social-links/
您可以下载并分析它。我希望能够帮助您满足您的要求。 谢谢。