WordPress 插件开发教程:Part4 与WordPress整合 My Plugin标签开始。 My PluginMy Plugin My PluginTest Test Test T

鱼见海资源网最新教程:

在开发插件的时候与 WordPress 整合是一个关键步骤。WordPress 提供多种不同的方法来整合插件,包括添加顶级菜单和子菜单项,创建小工具和控制板小工具,以及为你的内容页面添加meta内容框。

本节你会学到如果正确的在 WordPress 的各种不同地方整合插件。也会学到插件可用到的合适的设计和装饰方法,来为用户提供一致的用户界面体验。

添加菜单和子菜单

你创建的插件都需要一些菜单项,通常链接到插件的选项配置页面。WordPress 提供创建两种菜单的方法:顶级菜单或者子菜单。

创建顶级菜单

第一种菜单是直接添加到 WordPress 管理页面菜单列表中的顶级菜单。例如,Settings( 设置 ) 是一个顶级菜单。顶级菜单是有多个选项页面的插件常用的。要注册一个顶级菜单,使用 add_menu_page() 函数。

add_menu_page() 所接受的参数:

  • page_title – 页面的 title, 和显示在 标签里的一样
  • menu_title – 在控制面板中显示的名称
  • capability – 要浏览菜单所要的最低权限
  • menu_slug – 要引用该菜单的别名; 必须是唯一的
  • function – 要显示菜单对应的页面内容所调用的函数
  • icon_url – 菜单的 icon 图片的 URL
  • position – 出现在菜单列表中的次序

下面演示创建菜单的过程。使用 admin_menu 动作钩子来触发菜单代码。不管是顶级菜单还是子菜单,这个钩子都适用。

admin_menu 动作钩子调用了自定义的 boj_menuexample_create_menu() 函数。接着调用 add_menu_page() 函数把自定义的菜单注册到 WordPress。菜单的名字为 Menu Example Settings, 需要 manage_options 权限( 也就是管理员 )才能访问。并设置了位于插件下面 /images 目录中的 icon。

添加子菜单

现在已经有了顶级菜单,可以为顶级菜单添加子菜单项了。要注册一个子菜单,使用 add_submenu_page() 函数。

与上面的 add_menu_page() 函数类似。要注意的是:
parent_slug – 父级菜单的别名( 前面提到的 menu_slgu )。接着上面的例子继续注册子菜单:

上面的代码在主菜单下创建了三个子菜单:About,Help,和 Uninstall。每一个子菜单链接到一个不同的包含子菜单页面内容的自定义函数。

向已经存在的菜单中添加一个菜单项

如果你的菜单只有一个单独的设置页面,就没必要创建一个自定义的顶级菜单了。你可以简单的把它添加到已经存在菜单下。例如 Settings 菜单。

WordPress 提供许多不同的函数像一个已经存在的默认菜单添加一个子菜单。其中一个函数是 add_options_page() 。add_options_page() 函数向 Settings 菜单添加子菜单项。

参数和上面两个函数类似。

示例:

下面是所有可用的添加子菜单的函数:

  • add_dashboard_page
  • add_posts_page
  • add_media_page
  • add_links_page
  • add_pages_page
  • add_comments_page
  • add_theme_page
  • add_plugins_page
  • add_users_page
  • add_management_page
  • add_options_page

使用小工具 ( widgets )

小工具可以很好的向插件使用者提供显示插件信息或者数据的方法。WordPress 提供了一系列和小工具相关的 API 来使用小工具。这一节会介绍创建小工具,添加并保存小工具的选项,以及在小工具中显示插件信息。

创建小工具

在 WordPress 中,使用 WP_Widget 类来创建小工具。了解一下这个类有助于理解小工具是如何工作的。

WP_Widget 为你的小工具提供负责不同功能的多个函数。

下面来为你的插件创建一个小工具。这是一个简单的文本小工具,用来保存和显示你喜欢的电影和歌曲。它展示了如何在 WordPress 小工具中保存 text 数据。

这里使用 widgets_init 动作钩子。这个钩子在默认的小工具注册到 WordPress 中之后被触发。

widgets_init 钩子触发自定义的函数。接着使用 register_widget() 函数来注册小工具,这个函数接受一个参数 — 将要继承( extends ) WP_Widget 的类的类名。你可以使用这个函数注册任意多个小工具。

注册了小工具之后,接着来看小工具类。

是用你在注册小工具时定义的唯一的类名来从 WP_Widget 继承一个新类。接下来开始创建小工具。

 'boj_widgetexample_widget_class',
            'description' => 'Display a user's favorite movie and song.'
        );
        $this->WP_Widget( 'boj_widgetexample_widget_my_info', 'My Info Widget', $widget_ops );
    }
?>

首先,用一个数组 $widget_ops 来存储小工具的选项:classname 和 description。classname 是添加到
元素的类名。默认情况下,Sidebars 将所有的小工具都显示成 unordered 列表( ul )。每一个单独的小工具是那个列表中的一个列表项( li ),所以通过添加一个自定义的 classname 和 ID,就可以方便的为小工具定义样式了。description 显示在 外观 => 小工具 下面,描述小工具的功能。

接着,把这个数据值传递给 WP_Widget。传递的第一个值是前面提到的小工具的列表项( li )的 ID 值。第二个值是小工具的名字。最后一个值是前面创建的选项数组。

我们接着来创建小工具的设置表单项。这个小工具接受三个值:标题,最爱的电影,最爱的歌曲。

 'My Info', 'movie' => '', 'song' => '' );
        $instance = wp_parse_args( (array) $instance, $defaults );
        $title = $instance['title'];
        $movie = $instance['movie'];
        $song = $instance['song'];
        ?>
 
        

Title:

Favorite Movie:

Favorite Song:

首先,声明 $defaults 变量来设置每个选项的默认值。接着填充实例的值。这样就已经保存了小插件的设置了。如果新建一个小工具到 sidebar,没有保存任何设置,那么这些值就是空的。

小工具设置的最后一部分就是显示提供信息输入的表单项。使用三个标准的 HTML input text 字段分别给:title,movie,和 song。在这里不需要提供

标签或提交按钮。widget 类会自动处理这些。同时使用 esc_attr() 函数来得到之前保持的值并显示在字段上。

接下来使用 widget 类的 update 函数来保持这些设置。

如上所示,widget 类处理了所有的保存工作。你只用简单的为每一个小工具的设置传递 $new_instance 的值就可以了。一定要注意任何用户输入的数据,这里使用了 PHP 函数 strip_tags()。

创建小工具的最后一步就是在 sidebar 上显示小工具。这里使用 widget 类的 widget 函数来完成。

<?php // 显示小工具
    function widget( $args, $instance ) {
        extract( $args );
 
        echo $before_widget;
        $title = apply_filters( 'widget_title', $instance['title'] );
        $movie = empty( $instance['movie'] ) ? ' ' : $instance['movie'];
        $song = empty( $instance['song'] ) ? ' ' : $instance['song'];
 
        if ( !empty( $title ) ) { echo $before_title . $title . $after_title; };
        echo '

Fav Movie: ' . $movie . ''; echo '

Fav Song: ' . $song . '

'; echo $after_widget; } ?>

第一步是提取 $args 参数。这个变量保存着全局的模板值,比如 $before_widget 和 $after_widget。这些值可以在注册一个 sidebar 的时候定义,从而可以自定义包围你的小工具的代码,例如添加自定义的


标签。

接着将 $title 变量赋值为小工具的 title。给 title 使用 widget_title 过滤器钩子。这就使得其他开发者可以根据需要修改小工具的 title。同样对 $movie 和 $song 变量赋值。

现在已经定义了小工具的所有变量,是时候显示它们了。首先显示 $title 变量。用 $before_title 和 $after_title 变量包住它很重要。这两个全局变量同样可以在注册一个 sidebar 的时候自定义。接着显示 favorite movie 和 favorite song 的值。最后记住用 $after_widget 全局变量做结束。

恭喜你创建成功了一个 WordPress 小工具。现在可以添加并配置你的小工具了。接着你的小工具就显示到了 sidebar 中。

下面我们把整个小工具的代码放在一起回顾一下:

 'boj_widgetexample_widget_class',
                'description' => 'Display a user's favorite movie and song.'
            );
            $this->WP_Widget( 'boj_widgetexample_widget_my_info', 'My Info Widget', $widget_ops );
        }
 
   // 创建小工具的设置表单
        function form($instance) {
            $defaults = array( 'title' => 'My Info', 'movie' => '', 'song' => '' );
            $instance = wp_parse_args( (array) $instance, $defaults );
            $title = $instance['title'];
            $movie = $instance['movie'];
            $song = $instance['song'];
            ?>
 
            

Title:

Favorite Movie:

Favorite Song:

<?php } // 保存小工具设置 function update( $new_instance, $old_instance ) { $instance = $old_instance; $instance['title'] = strip_tags( $new_instance['title'] ); $instance['movie'] = strip_tags( $new_instance['movie'] ); $instance['song'] = strip_tags( $new_instance['song'] ); return $instance; } // 显示小工具 function widget( $args, $instance ) { extract( $args ); echo $before_widget; $title = apply_filters( 'widget_title', $instance['title'] ); $movie = empty( $instance['movie'] ) ? ' ' : $instance['movie']; $song = empty( $instance['song'] ) ? ' ' : $instance['song']; if ( !empty( $title ) ) { echo $before_title . $title . $after_title; }; echo '

Fav Movie: ' . $movie . ''; echo '

Fav Song: ' . $song . '

'; echo $after_widget; } } ?>

高级小工具

现在你已经明白了最基本的小工具如何工作,是时候创建更高级的小工具了。下面的例子中,创建一个获得 RSS 源并显示结果的小工具。首先,需要注册小工具。

注册完小工具 boj_awe_widget 之后,将你的新小工具继承 WP_Widget 类。

 'boj_awe_widget_class',
                'description' => 'Display an RSS feed with options.'
            );
            $this->WP_Widget( 'boj_awe_widget', 'Advaced RSS Widget', $widget_ops );
        }
// 接下面...
?>

和之前一样,设置类名和小插件的描述。接下来创建小工具选项。

 'RSS Feed',
                'rss_feed' => 'http://strangework.com/feed',
                'rss_items' => '2'
            );
            $instance = wp_parse_args( (array) $instance, $defaults );
            $title = $instance['title'];
            $rss_feed = $instance['rss_feed'];
            $rss_items = $instance['rss_items'];
            $rss_date = $instance['rss_data'];
            $rss_summary = $instance['rss_summary'];
            ?>
                

Title:

RSS Feed:

Items to Display: >1 >2 >3 >4 >5

Show Date?: />

Show Summary?: />

这个小工具提供5个选项分别让用户来设置 title, RSS feed 源, 要显示的 items, 以及是否显示日期和摘要。title 和 RSS 源是标准的 text 表单项。

items to display 选项是一个 HTML select 列表。注意 selected() 函数的使用,它是非常有用的工具,通过比较 select 字段中两个值来确定是否那个 option 是被选中。如果比较的 option 的值是保存的值,WordPress 为那个 option 字段添加 selected=”selected” 值,使得它被选中。

show date 和 show summary 选项都是 checkbox 表单项。类似于前面的 selected() 函数,使用 WordPress 的 checked() 函数,通过比较来确定是否被选中,并添加 checked=”checked” 来选中 checkbox。

这样你的小工具的表单就设置好了,接着来保持小工具的选项。

小工具的选项已经保存了,接着就根据这些选项来显示小工具。

 $rss_feed,
                'title' => $title,
                'items' => $rss_items,
                'show_summary' => $rss_summary,
                'show_author' => 0,
                'show_date' => $rss_date
            ) );
        }
 
         echo $after_widget;
    }
?>

通过加载所有的小工具选项来确定如何显示 RSS feed。

回顾整个代码:

 'boj_awe_widget_class',
                'description' => 'Display an RSS feed with options.'
            );
            $this->WP_Widget( 'boj_awe_widget', 'Advaced RSS Widget', $widget_ops );
        }
 
        // 创建小工具的设置表单
        function form( $instance ) {
            $defaults = array(
                'title' => 'RSS Feed',
                'rss_feed' => 'http://strangework.com/feed',
                'rss_items' => '2'
            );
            $instance = wp_parse_args( (array) $instance, $defaults );
            $title = $instance['title'];
            $rss_feed = $instance['rss_feed'];
            $rss_items = $instance['rss_items'];
            $rss_date = $instance['rss_data'];
            $rss_summary = $instance['rss_summary'];
            ?>
                

Title:

RSS Feed:

Items to Display: >1 >2 >3 >4 >5

Show Date?: />

Show Summary?: />

$rss_feed, 'title' => $title, 'items' => $rss_items, 'show_summary' => $rss_summary, 'show_author' => 0, 'show_date' => $rss_date ) ); } echo $after_widget; } } ?>

创建控制板小工具( Dashboard Widgets )

WordPress 同时还提供了控制板小工具的 API。你可以使用这个 API 在 WordPress 的控制板页面创建自定义的小工具。

创建控制板小工具,要用到 wp_add_dashboard_widget() 函数。示例:


?>

wp_add_dashboard_widget() 函数接受下面的参数:

  • widget_id — 添加到 widget DIV 元素的 CSS ID
  • widget_name — 在小插件头部显示的名称
  • callback — 被调用的用来显示插件的函数
  • control_callback — 被调用的用来处理元素和提交的函数

下面是几个不同的例子。第一个,创建一个简单的控制板小工具来向用户显示一些内容。

要创建控制板小工具,使用 wp_dashboard_setup 动作钩子。这个钩子在默认的控制板钩子初始化完毕后,但是还没有显示时立即执行。

用 wp_dashboard_setup 钩子来调用自定义的 boj_dashboard_example_widgets() 函数。接着使用 wp_add_dashboard_widget() 函数来注册你的控制板小工具。将小工具的 title 设置成 My Plugin Information,并调用自定义的函数 boj_dashboard_example_display()。在注册完自定义的小工具后,需要完成自定义函数来向用户显示信息。

<?php function boj_dashboard_example_display() {
        echo '

Please contact support@example.ccom to report bugs.'; } ?>

这样就完成了一个控制板小工具向用户显示一条信息。控制板小工具 API 自动使你的小工具可以拖拽,收放,以及将你的小工具添加到 “显示选项” 中,可以让用户选择显示或隐藏。

我们来回顾一下全部的代码:

<?php /*
    Plugin Name: Dashboard Widget Example Plugin
    Plugin URI: http://example.com/wordpress-plugins/my-plugin
    Description: A plugin to create dashboard widgets in WordPress
    Version: 1.0
    Author: Brad Williams
    Author URI: http://wrox.com
    License: GPLv2
    */
 
    add_action( 'wp_dashboard_setup', 'boj_dashboard_example_widgets' );
 
    function boj_dashboard_example_widgets() {
        // 创建一个自定义的控制板小工具
        wp_add_dashboard_widget(
            'dashboard_custom_feed',
            'My Plugin Information',
            'boj_dashboard_example_display'
        );
    }
 
    function boj_dashboard_example_display() {
        echo '

Please contact support@example.ccom to report bugs.'; } ?>

创建一个带配置选项的控制板小工具

你已经了解了控制板小工具,可以接着创建带高级配置选项的小工具了。控制板小工具可以保存选项,使得用户可以方便的配置它们。如果一个控制板小工具有任何的选项,在你 hover 这个小工具的标题的时候就会出现一个 “配置” 链接。

接下来的例子中,创建一个可以自定义 RSS URL 并显示内容的控制板小工具。

注意,这次 wp_add_dashboard_widget() 函数有四个参数,boj_dashboard_example_setup() 函数是控制回调,用来显示小工具的配置选项数据,并保存。下面我们来创建 boj_dashboard_example_display() 函数在小工具中显示自定义的 RSS 订阅。

<?php function boj_dashoboard_example_display() {
        // 加载小工具选项
        boj_option = get_option( 'boj_dashboard_widget_rss ');
 
        // 如果选项为空,则设置默认值
        $boj_rss_feed = ( $boj_option ) ? $boj_option : 'http://wordpress.org/news/feed/';
 
        // 获得 RSS 源并显示
        echo '
'; wp_widget_rss_output( array( 'url' => $boj_rss_feed, 'title' => 'RSS Feed News', 'items' => 2, 'show_summary' => 1, 'show_author' => 0, 'show_date' => 1 ) ); echo '

‘;
}
?>

前两行加载 作为小工具选项保存的 RSS feed 地址。在 Part-7 “插件设置” 中,会涉及更多插件设置和选项的信息。接着使用 wp_widget_rss_output() 函数来取得 RSS 订阅并显示。这个好用的函数是在 WordPress 中获取并显示 RSS 订阅到好办法。

现在已经有了小工具的显示页面,接着创建控制回调函数 boj_dashboard_example_setup()。这个函数向你的小工具添加 form 字段,让用户可以自定义配置小工具。


        

这个函数处理的第一个任务是保存小工具的选项。在保存之前,都应该检查 POST 值是否存在,这里使用 PHP 函数 isset()。接着将 $_POST[‘boj_rss_feed’] 值赋给 $boj_rss_feed 变量。注意 POST 的值是如何使用 esc_url_raw() 函数来获取的。它在保存数据之前验证值是否为合法的 URL 形式。最后,使用 update_option() 函数来保存小工具的选项。

现在小工具选项已经保存了,你还需要提供 form 字段,好让用户来输入并保持他们想要的 RSS URL。首先从数据库中得到小工具选项,用来显示在 form 字段中。接着创建一个叫做 boj_rss_feed 的 text input 字段。注意 value 字段设置成了 $boj_rss_feed,用来保存用户输入的 RSS URL。

到此,这个控制板小工具就完成了,我们再回顾一下整个的代码。

<?php /*
    Plugin Name: RSS Dashboard Widget Example Plugin
    Plugin URI: http://example.com/wordpress-plugins/my-plugin
    Description: A plugin to create dashboard widgets in WordPress
    Version: 1.0
    Author: Brad Williams
    Author URI: http://wrox.com
    License: GPLv2
    */
 
    add_action( 'wp_dashboard_setup', 'boj_dashboard_example_widgets' );
 
    function boj_dashboard_example_widgets() {
        // 创建一个自定义的控制板小工具
        wp_add_dashboard_widget(
            'dashboard_custom_feed',
            'My Plugin Information',
            'boj_dashboard_example_display',
            'boj_dashboard_example_setup'
        );
    }
 
    function boj_dashoboard_example_display() {
        // 加载小工具选项
        boj_option = get_option( 'boj_dashboard_widget_rss ');
 
        // 如果选项为空,则设置默认值
        $boj_rss_feed = ( $boj_option ) ? $boj_option : 'http://wordpress.org/news/feed/';
 
        // 获得 RSS 源并显示
        echo '
'; wp_widget_rss_output( array( 'url' => $boj_rss_feed, 'title' => 'RSS Feed News', 'items' => 2, 'show_summary' => 1, 'show_author' => 0, 'show_date' => 1 ) ); echo '

文章来源于互联网

© 版权声明
THE END
喜欢就支持一下吧
点赞282 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容