日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

wordpress插件制作

發布時間:2024/6/14 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 wordpress插件制作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
<?php /* 本文章是在網上搜尋其他關于wordpress創建插件文章并親自實踐總結而來的代碼。 參考文章網址有 http://www.ashuwp.com/courses/level/optionpage 很好的教程,簡單易懂 http://www.akasuna.com/2010/10/20/how-to-develop-a-plug-in/ 也是一篇不錯的文章在根目錄下 wp-content/plugins 新建存放新建插件文件夾 my_wp_plugin my_wp_plugin 中新建 my_wp_plugin.php 文件 內容: *//* Plugin Name: 插件名稱 Plugin URI: 插件介紹的網址,沒有就填博客網址吧 Description: 這里填插件的簡短介紹 Version: 版本號 Author: 作者名 Author URI: 作者的網址 *//* 以上插件信息在my_wp_plugin.php中要用注釋括起來 再在my_wp_plugin.php中新建方法 */function my_wp_plugins_first_fun($content) {//if (is_single ())//只在 single 頁才執行$content .= "<p style='color:red'>這是我測試的第一個wp插件!</p>";return $content; }/* 到使用的主題文件中的任意頁,在想要顯示的位置輸入(這里在content-page.php頁 <?php the_content(); ?> 代碼下面添加) */if(function_exists('my_wp_plugins_first_fun')) {//判斷函數是否存在echo my_wp_plugins_first_fun("測試用-");//可以直接使用插件里的方法 }/* 訪問網站剛才修改的頁即可看到想要顯示的結果 至此,這段代碼,應該可以勉強算是一個插件了 但是插件存在一個問題,需要手工去修改主題代碼,如果用戶換了主題的話,需要在新主題里面再次修改代碼,這個不好。 這時要開始用 Filter 鉤子了!總的來說,插件的核心是兩個 function,用來添加 Hooks(中文譯為鉤子) add_action ($hookname, $callbackfunction) add_filter ($hookname,$callbackfunction)這兩個方法相當重要,幾乎所有的插件都要用到他們。Actions,目前理解就是 wordpress 核心代碼預留的一些特殊的切入點,或者說是在執行一些特定事件時候發生,例如文章發布時,或者訪客留言時觸發。 Filters,應該就是 wordpress 執行時,對數據傳輸過程的一種過濾機制,例如當文章保存到數據庫的過程,或者文章從事數據庫中取出,展現到瀏覽器中的這個過程。今天要制作的插件,應該是用 Filters,因為要在文章顯示在瀏覽器之前,在最后面加上一段字符竄,用來顯示版權信息,后面添加菜單項的時候,也要用到 Actions。改良插件 再在my_wp_plugin.php中添加如下代碼 */ add_filter ( 'the_content', 'my_wp_plugins_first_fun' );/* the_content 是鉤子的名字,my_wp_plugins_first_fun 是回調函數名稱。 這樣一來,只要啟用插件就可以實現功能,無需去修改主題了 可以把剛才主題文件中添加的代碼刪掉,然后啟用插件,再查看該頁,顯示效果應該是一樣的,無論怎么換主題,還是會自動顯示my_wp_plugins_first_fun方法里的信息。 至此一個真正的插件算是完成了,但是此插件將版權信息直接寫在代碼里,可以在 WordPress 后臺中為插件單獨添加一個菜單和頁面,信息可以保存在數據庫里面。 繼續在my_wp_plugin.php中添加如下代碼 */register_activation_hook(__FILE__,'my_wp_plugins_install');/* 注冊激活插件時要調用的函數 */register_deactivation_hook( __FILE__, 'my_wp_plugins_remove' );/* 注冊停用插件時要調用的函數 */function my_wp_plugins_install() {/* 在數據庫的 wp_options 表中添加一條記錄,第二個參數為存儲的值 */add_option("my_wp_plugins_text" , "<p style='color:red'>這是我測試的第一個wp插件!</p>" , '', 'yes'); } function my_wp_plugins_remove() {delete_option('my_wp_plugins_text');/* 刪除 wp_options 表中的對應記錄 */ }/* add_option( $option, $value = '', $deprecated = '', $autoload = 'yes' ) string $option 必填,要存到wp_options表option_name字段的值,相當于鍵名 mixed $value 選填,要存到wp_options表option_value字段的值,相當于鍵值 mixed $deprecated 選填,不再使用 bool $autoload 選填,預設為啟用。要存到wp_options表autoload字段的值,WordPress的啟動時是否加載選項。接著在my_wp_plugin.php中添加如下代碼 */if( is_admin() ) {//判斷是否在 WordPress 后臺add_action('admin_menu', 'my_wp_plugins_menu');//添加菜單 }function my_wp_plugins_menu() {add_options_page('信息設置頁面', '設置菜單標題', 'administrator','my_wp_plugins', 'plugins_option_menu');//在設置欄下添加菜單,與add_submenu_page添加效果相同,只是wordpress提供的方便形式add_theme_page( 'title標題' , '外觀菜單標題' , 'administrator' , 'my_wp_plugins_theme' , 'plugins_theme_menu');//在外觀欄下添加菜單add_menu_page( 'title標題' , '頂級菜單標題' , 'administrator' , 'my_wp_plugins_top' , 'plugins_top_menu' , '' , 6 );//添加頂級菜單add_submenu_page( 'my_wp_plugins_top' , 'title標題' , '子菜單標題' , 'administrator' , 'my_wp_plugins_child' , 'plugins_child_menu' );//添加子菜單 }/* add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function); $page_title 頁面的title信息 $menu_title 菜單名稱 $capability 訪問這個頁面需要的權限 $menu_slug 菜單別名 需要獨一無二 $function 點擊該菜單時的回調函數(用以顯示設置頁面)add_theme_page( $page_title, $menu_title, $capability, $menu_slug, $function); $page_title 頁面的title信息 $menu_title 菜單名稱 $capability 訪問這個頁面需要的權限 $menu_slug 菜單別名 需要獨一無二 $function 點擊該菜單時的回調函數(用以顯示設置頁面)add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position ); $page_title 頁面的title信息 $menu_title 菜單名稱 $capability 訪問這個頁面需要的權限 $menu_slug 菜單別名 需要獨一無二 $function 點擊該菜單時的回調函數(用以顯示設置頁面) $icon_url 菜單圖標url地址 $position 此菜單項在菜單中的位置,警告:如果兩個菜單項的位置屬性相同,其中一個可能要被覆蓋 上面函數的position參數,默認的菜單項位置屬性如下: 2 Dashboard 4 Separator 5 Posts 10 Media 15 Links 20 Pages 25 Comments 59 Separator 60 Appearance 65 Plugins 70 Users 75 Tools 80 Settings 99 Separatoradd_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function ); $parent_slug 父級菜單項的別名 $page_title 頁面的title信息 $menu_title 菜單名稱 $capability 訪問這個頁面需要的權限 $menu_slug 菜單別名 需要獨一無二 $function 點擊該菜單時的回調函數(用以顯示設置頁面)wordpress對于function參數,這個參數一般是函數名,要調用類的方法,使用 array(類名,函數名) 這樣的形式調用。 如果這個參數為空的話,menu_slug參數可以是一個文件路徑。basename(__FILE__) 返回當前文件完整名稱至此,已經可以在后臺看到菜單項了,但是點擊的話,還會出錯,因為還沒有添加回調函數指向頁面 繼續在my_wp_plugin.php中添加如下代碼 */ function plugins_option_menu() { //如果要存儲wp_options表值,以下寫法固定 ?> <div><h2>信息設置</h2><form method="post" action="options.php"><?php wp_nonce_field('update-options'); //用來輸出提交向options.php頁時的驗證數據?><p><textarea name="my_wp_plugins_text"><?php echo get_option('my_wp_plugins_text'); ?></textarea></p><p><textarea name="my_wp_plugins_text2"><?php echo get_option('my_wp_plugins_text2'); ?></textarea></p><p><input type="hidden" name="action" value="update" /><!-- 要存的form控件名 = 此處的value值 = wp_options表option_name字段值。多個form控件名在value值中用 , 分開--><input type="hidden" name="page_options" value="my_wp_plugins_text,my_wp_plugins_text2" /><input type="submit" name="submit" value="保存設置" class="button-primary" /></p></form> </div> <?php }//要啟用wordpress自帶上傳需要引用wordpress自帶的JS和CSS //加載上傳圖片的js(wp自帶) wp_enqueue_script('thickbox'); //加載css(wp自帶) wp_enqueue_style('thickbox'); //加載jquery,get_bloginfo( 'stylesheet_directory' ) 返回當前網站使用主題所在文件夾完整路徑 wp_enqueue_script('my-upload', get_bloginfo( 'stylesheet_directory' ) . '/js/jquery-1.8.2.js');function plugins_theme_menu(){ ?> <form method="post" enctype="multipart/form-data" action=""><div><h2>wordpress自帶上傳</h2><p><label><input type="text" name="img_url_txt" id="img_url_txt" value="<?php echo get_option('img_url'); ?>" size="80"/><input type="button" name="upload_but" id="upload_but" value="上傳"/></label></p><p><input type="submit" name="submit" value="保存設置" /></p></div> </form> <script type="text/javascript"> $("#upload_but").click(function(){//點擊按鈕,打開wordpress自帶上傳工具tb_show('', 'media-upload.php?type=image&amp;TB_iframe=true'); })window.send_to_editor = function(html) {img_url = $('img',html).attr('src');//將上傳后的圖片完整路徑賦給text框以保存到數據庫中$("#img_url_txt").val(img_url);tb_remove(); } </script> <?php }function plugins_top_menu(){echo '<h1>這是頂級菜單頁面</h1>'; }function plugins_child_menu() {echo '<h3>這是子菜單頁面</h3>';} /* 也可以使用update_option函數來自己手動更新wp_options表數據。 此時提交表單中不需要把提交地址指向wp-admin/options.php(這里假使地址指向當前頁),就不需要寫wp_nonce_field來驗證 也不需要寫action,page_options兩個隱藏控件 */ if($_POST['submit']){if($_POST['my_wp_plugins_text'])update_option( "my_wp_plugins_text", $_POST['my_wp_plugins_text'] );//update_option( "my_wp_plugins_text", array('ok'=>'yes!') );也可存數組,同樣取出時取出的也是數組if($_POST['my_wp_plugins_text2'])update_option( "my_wp_plugins_text2", $_POST['my_wp_plugins_text2'] );if($_POST['img_url_txt'])update_option( "img_url", $_POST['img_url_txt'] ); } /* update_option( $option, $newvalue ) $option 要更新wp_options表option_name字段的值,相當于鍵名 $newvalue 要更新wp_options表option_value字段的值,相當于鍵值原my_wp_plugins_first_fun函數中 $content 變量值即可改成 $content .= get_option('my_wp_plugins_text'); 從數據庫中獲取值插件中也可直接使用PHP的數據庫操作函數 */ $que_str = mysql_query("select * from wp_options limit 1"); $row_op = mysql_fetch_array($que_str); echo $row_op['option_name']; ?>

?

轉載于:https://www.cnblogs.com/dreamhome/archive/2013/03/30/2990736.html

總結

以上是生活随笔為你收集整理的wordpress插件制作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。