为子主题增加主题选项功能

用子主题的好处都知道:可以在使用的主题更新后,对其的更改不会被更新覆盖掉,

但是如果能为子主题增加主题选项,是不是会使子主题的使用效果更好呢,下面介绍步骤(以下仅为部分代码,后面有完整代码):

1、在子主题的”function.php”中增加以下代码,使外观菜单中增加”子主题选项”菜单,点击可进入对应标签页,各参数作用请看注释:

1  
2  
// 在后台外观导航下增加子主题设置标签页:[1]设置页的title、[2]显示在外观菜单中的标题、[3]访问这个页面需要的权限、[4]别名(出现在地址栏中:?page=XXXXXXXXX)、[5]执行的函数(设置页面包含的内容)  
add_theme_page("子主题设置", "子主题设置", "administrator", "bmqy_subTheme_opts", 'display');  

效果截图:

子主题设置菜单

2、为”子主题设置”的标签页编写需要进行主题选项的html代码,举例”广告位设置”代码如下:

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
/* -- 子主题设置页标签面 -- */  
function display() {  
    add_thickbox();  
    ?>  
    

子主题设置项

"post" action="" name="bmqy_subTheme_topRecommend" id="bmqy_subTheme_topRecommend"> $bstTopRecommendOptions = get_option('bmqy_subTheme_topRecommend'); ?>

广告位设置

"row">
顶部广告推荐位
"row">
"row">
"row">  插入图片

请填写图片链接地址,推荐尺寸:1198*80

submit_button('保存', 'primary', 'submit_bmqy_subTheme_topRecommend'); ?>
// 调用处理插入图片的方法 send_to_editor(); }

效果截图:

子主题设置项

3、增加提交数据并保存到数据库的代码:

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
// 如果有提交数据,接收并保存到数据库  
if(isset($_POST['submit_bmqy_subTheme_topRecommend'])) {  
    // 接收并处理数据:顶部推荐广告位  
    $bstTopRecommendOptions['status'] = ($_POST['status']==1) ? (bool)true : (bool)false;  
    $bstTopRecommendOptions['title'] = $_POST['title'];  
    $bstTopRecommendOptions['link'] = $_POST['link'];  
    $bstTopRecommendOptions['image'] = $_POST['image'];  
    // 更新数据  
    update_option('bmqy_subTheme_topRecommend', $bstTopRecommendOptions);  
}  

4、增加插入图片功能的处理代码:

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
/* -- 接收并处理上传的图片信息 -- */  
function send_to_editor(){  
    ?>  
      
      
}  

5、前台调用时的代码如下:

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
  
         // 获取顶部推荐配置项  
         $bstTopRecommendOptions = get_option('bmqy_subTheme_topRecommend');  
         if ( $bstTopRecommendOptions['status'] == 1) {  
         ?>  
  
  
  
          } ?>  

6、本站点结合”露兜博客 http://www.ludou.org/wordpress-add-theme-options.html"和"阿树工作室http://www.ashuwp.com/courses/optionpage/206.html"两位博主分享的教程编写代码如下,再次感谢两位博主的分享!感谢!

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
67  
68  
69  
70  
71  
72  
73  
74  
75  
76  
77  
78  
79  
80  
81  
82  
83  
84  
85  
86  
87  
88  
89  
90  
91  
92  
93  
94  
95  
96  
97  
98  
99  
100  
101  
102  
103  
104  
105  
106  
107  
108  
109  
110  
111  
112  
113  
114  
115  
116  
117  
118  
119  
120  
121  
122  
123  
124  
125  
126  
127  
128  
129  
130  
131  
132  
133  
134  
135  
136  
137  
138  
139  
140  
141  
142  
143  
144  
145  
146  
147  
148  
149  
150  
151  
152  
153  
154  
155  
156  
157  
158  
159  
160  
161  
162  
163  
164  
165  
166  
167  
168  
169  
170  
171  
172  
173  
174  
175  
176  
177  
/** 子主题增加设置项 begin **/  
class BmqySubThemeOptions {  
    /* -- 初始化 -- */  
    function init() {  
        // 如果有提交数据,接收并保存到数据库  
        if(isset($_POST['submit_bmqy_subTheme_topRecommend'])) {  
            // 接收并处理数据:顶部推荐广告位  
            $bstTopRecommendOptions['status'] = ($_POST['status']==1) ? (bool)true : (bool)false;  
            $bstTopRecommendOptions['title'] = $_POST['title'];  
            $bstTopRecommendOptions['link'] = $_POST['link'];  
            $bstTopRecommendOptions['image'] = $_POST['image'];  
            // 更新数据  
            update_option('bmqy_subTheme_topRecommend', $bstTopRecommendOptions);  
        }  
        if(isset($_POST['submit_bmqy_subTheme_copyright'])) {  
            // 接收并处理数据:版权信息  
            $bstCopyrightOptions['status'] = ($_POST['status']==1) ? (bool)true : (bool)false;  
            $bstCopyrightOptions['content_tpl'] = esc_html($_POST['content_tpl']); // 转义提交的html  
            $bstCopyrightOptions['inCateList'] = $_POST['inCateList'];  
            // 更新数据  
            update_option('bmqy_subTheme_copyright', $bstCopyrightOptions);  
        }  
        if(isset($_POST['submit_bmqy_subTheme_taobaoShops'])) {  
            // 接收并处理数据:淘宝店铺  
            $bstTaobaoShopsOptions['status'] = ($_POST['status']==1) ? (bool)true : (bool)false;  
            $bstTaobaoShopsOptions['title'] = $_POST['title'];  
            $bstTaobaoShopsOptions['image'] = $_POST['image'];  
            $bstTaobaoShopsOptions['desc'] = esc_html($_POST['desc']); // 转义提交的html  
            $bstTaobaoShopsOptions['inCateList'] = $_POST['inCateList'];  
            // 更新数据  
            update_option('bmqy_subTheme_taobaoShops', $bstTaobaoShopsOptions);  
        }  
  
        // 在后台外观导航下增加子主题设置标签页:[1]设置页的title、[2]显示在外观菜单中的标题、[3]访问这个页面需要的权限、[4]别名(出现在地址栏中:?page=XXXXXXXXX)、[5]执行的函数(设置页面包含的内容)  
        add_theme_page("子主题设置", "子主题设置", "administrator", "bmqy_subTheme_opts", array('BmqySubThemeOptions', 'display'));  
    }  
    /* -- 接收并处理上传的图片信息 -- */  
    function send_to_editor(){  
        ?>  
          
          
    }  
    /* -- 子主题设置页标签面 -- */  
    function display() {  
        add_thickbox();  
        ?>  
        

子主题设置项

网站分类ID

echo bmqy_show_category(); ?>


"post" action="" name="bmqy_subTheme_topRecommend" id="bmqy_subTheme_topRecommend"> $bstTopRecommendOptions = get_option('bmqy_subTheme_topRecommend'); ?>

广告位设置

"row">
顶部广告推荐位
"row">
"row">
"row">  插入图片

请填写图片链接地址,推荐尺寸:1198*80

submit_button('保存', 'primary', 'submit_bmqy_subTheme_topRecommend'); ?>
"post" action="" name="bmqy_subTheme_copyright" id="bmqy_subTheme_copyright"> $bstCopyrightOptions = get_option('bmqy_subTheme_copyright'); // 默认设置 if(!is_array($bstCopyrightOptions)){ $bstCopyrightOptions['status'] = true; $bstCopyrightOptions['content_tpl'] = esc_html('注:原创文章,转载请注明出自 ⟪⟫ ,Thank you!'); $bstCopyrightOptions['inCateList'] = '12,15,22,45,52,154'; } ?>

文章尾部版权信息设置

"row">
版全信息
"row">

版权信息模板:为文章标题、为文章链接

"row">

设置哪些分类的文章下显示,多个ID以英文逗号分隔

submit_button('保存', 'primary', 'submit_bmqy_subTheme_copyright'); ?>
"post" action="" name="bmqy_subTheme_taobaoShops" id="bmqy_subTheme_taobaoShops"> $bstTaobaoShopsOptions = get_option('bmqy_subTheme_taobaoShops'); // 默认设置 if(!is_array($bstTaobaoShopsOptions)){ $bstTaobaoShopsOptions['status'] = true; $bstTaobaoShopsOptions['title'] = '北门清燕淘宝小店'; $bstTaobaoShopsOptions['image'] = 'http://gqrcode.alicdn.com/img?type=cs&shop_id=117869181&seller_id=279690537&w=140&h=140&el=q&v=1'; $bstTaobaoShopsOptions['desc'] = '
北门清燕仿站服务

扫一扫,去淘宝小店下单吧

我的淘宝小店,优惠活动进行中,欢迎来店洽谈咨询哦!

立即进店,或者在这里留言给我。

'
;
$bstTaobaoShopsOptions['inCateList'] = '248'; } ?>

文章尾部淘宝店铺设置

"row">
淘宝店铺
"row">
"row">  插入图片

请填写淘宝店铺二维码图片地址,推荐尺寸:140*140

"row">

可填加html标签,最终以显示 3 行为宜

"row">

设置哪些分类的文章下显示,多个ID以英文逗号分隔

submit_button('保存', 'primary', 'submit_bmqy_subTheme_taobaoShops'); ?>
// 调用处理插入图片的方法 BmqySubThemeOptions::send_to_editor(); } } // 注册并初始化方法 add_action('admin_menu', array('BmqySubThemeOptions', 'init')); /** 子主题增加设置项 end **/

整体效果截图:

子主题设置项

7、参考以上设置,相信您能让您的子主题功能更加强大o( _≧▽≦)ツ,最后再次感谢所有分享代码的朋友们,感谢o(_≧▽≦)ツ