鲍成龙
我只是不想再失去他——哪怕是仅存在一瞬的幻影!
鲍成龙

这一篇为大家讲解如何将数据保存到数据库中,并且显示在页面上,不会因提交表单时刷新页面输入框中内容消失。要实现这一功能我们需要借助WordPress函数来实现,下面就来讲解具体的实现方法,先把代码贴出来。还是根据之前的那个插件样例,大家可以直接在上面做修改。

WordPress插件制作教程(四): 将数据保存到数据库

// 在WordPress后台评论处添加一个子菜单
add_action('admin_menu', 'comments_submenu');
function comments_submenu() {
    add_comments_page(__('数据保存'), __('数据保存'), 'read', 'my-unique-identifier-datasave', 'add_comments_submenu');
}
// WordPress后台评论处菜单page
function add_comments_submenu(){
   if($_POST['test_hidden'] == 'y') {
       update_option('test_input_c',$_POST['test_insert_options']); //更新你添加的数据库
?>
     <div id="message" style="background-color: green; color: #ffffff;">保存成功 !</div>
<?php
   }
?>
  <div>
      <?php screen_icon(); //显示图标  ?>
      <h2>添加数据</h2>
      <form action="" method="post" id="my_plugin_test_form">
          <h3>
              <label for="test_insert_options">输入测试数据:</label>
              <input type="text" id="test_insert_options" name="test_insert_options" value="<?php  echo esc_attr(get_option('test_input_c')); ?>"  />
          </h3>
          <p>
              <input type="submit" name="submit" value="保存" class="button button-primary" />
              <input type="hidden" name="test_hidden" value="y"  />
          </p>
      </form>
  </div>
<?php
}
// 通过get_option()来显示存在数据库中的信息。
// 以上填写的信息都存在了数据库中的wp_options表里面。

上面简短的代码就实现了数据保存并显示的功能,通过这个功能我们就可以延伸到其他的方法或者功能上面。比如一些不错的主题都带有主题设置,里面的一些显示和存储都可以用上面的方法来实现,大家可以多多去尝试下。

2. 创建自定义插件设置菜单,实现options表的字段的更新设置:如图

WordPress插件制作教程(四): 将数据保存到数据库

WordPress插件制作教程(四): 将数据保存到数据库

<?php
// 创建自定义插件设置菜单
add_action('admin_menu', 'baw_create_menu');
function baw_create_menu() {
    // 创建新的顶级菜单
    add_menu_page('BAW Plugin Settings', 'BAW Settings', 'administrator', __FILE__, 'baw_settings_page', '');
    // 调用注册设置函数
    add_action( 'admin_init', 'register_mysettings' );
}
function register_mysettings() {
    // 注册我们的设置
    register_setting( 'baw-settings-group', 'new_option_name' );
    register_setting( 'baw-settings-group', 'some_other_option' );
    register_setting( 'baw-settings-group', 'option_etc' );
}
function baw_settings_page() {
?>
<div class="wrap">
<h2>你的插件名称</h2>
<form method="post" action="options.php">
    <?php settings_fields( 'baw-settings-group' ); // 设置字段 这个函数取代了 nonce magic, action field, and page_options ?>
    <?php do_settings_sections( 'baw-settings-group' ); // 这个函数取代了表单字段标记形式本身 ?>
    <table class="form-table">
        <tr valign="top">
        <th scope="row">New Option Name</th>
        <td><input type="text" name="new_option_name" value="<?php echo esc_attr( get_option('new_option_name') ); ?>" /></td>
        </tr>
         
        <tr valign="top">
        <th scope="row">Some Other Option</th>
        <td><input type="text" name="some_other_option" value="<?php echo esc_attr( get_option('some_other_option') ); ?>" /></td>
        </tr>
        
        <tr valign="top">
        <th scope="row">Options, Etc.</th>
        <td><input type="text" name="option_etc" value="<?php echo esc_attr( get_option('option_etc') ); ?>" /></td>
        </tr>
    </table>
    <?php submit_button(); ?>
</form>
</div>
<?php }?>

WordPress 选项机制

参阅Creating Options Pages,你将学会如何去创建一个自动保存选项数据的页面。

WordPress有一个"选项"机制,用于保存、更新以及检索那些独立的,具有特定名称的数据。选项的值可以是字符串、数组,甚至是PHP对象(当然,PHP对象在保存时必须能够被序列化或转换成字符串,检索的时候也必须能够被反序列化)。选项的名称必须是字符串,且必须是唯一的,这样才能够确保它们不会和WoredPress或其它插件产生冲突。

通常情况下,你最好能够对插件选项的数量进行一下精简。例如,如果你有10个不同名称的选项需要保存到数据库中,那么,你就可以考虑将这10个数据作为一个数组,并保存到数据库的同一个选项中。

以下是让你的插件使用选项机制的主要函数:

add_option($name, $value, $deprecated, $autoload);
// 官方文档: http://codex.wordpress.org/Function_Reference/add_option
// 创建一个新的选项并保存到数据库中,若选项已存在,则不进行任何操作。
// $name 必要参数(string)。要创建的选项的名称。
// $value 可选参数(string)。要创建的选项的值。默认值为空字符串。
// $deprecated 可选参数(string)。该选项是否已经过期。若需要让后面的$autoload参数生效,则该参数必须传入空字符串或null。
// $autoload 可选参数(enum: 'yes' or 'no')。是否自动加载该选项。若设置为 'yes',则该选项会被get_alloptions 函数自动检索到。默认值为 'yes'。
delete_option($option);
// 官方文档: http://codex.wordpress.org/Function_Reference/delete_option
// $option 必要参数(string) 选择要删除的选项的名称。有效的默认选项的列表可以在Option Reference选择参考。
update_option($option_name, $newvalue);
// 官方文档: http://codex.wordpress.org/Function_Reference/update_option
// 更新数据库中的选项值,若选项不存在,则创建该选项。
// (注意:如果你用不到$deprecated和$autoload参数的话,那么大可不必使用add_option函数)。
// $option_name 必要参数(string)。要更新/创建的选项名称。
// $newvalue 必要参数(string|array|object)。要更新/创建的选项的值。
get_option($option);
// 官方文档: http://codex.wordpress.org/Function_Reference/get_option
// 从数据库中获取指定选项的值。
// $option 必要参数(string)。选项的名称。你可以在Option Reference中找到与WordPress一同安装的默认选项列表。
"admin_email"——博客管理员的电子邮件地址。
"blogname"——博客标题,一般设置选项。
"blogdescription"——为你的博客标语;一般设置选项。
为你的博客"blog_charset"——字符编码;设置在阅读选项。
"date_format"——默认日期格式,一般设置选项。
"default_category"——默认文章类别;书面设置选项。
"home"——博客的网址,一般设置选项。
中的"siteurl"——WordPress网站地址,一般设置选项。
    警告:这不是一样get_bloginfo(中的"siteurl")(将返回主页url),但随着get_bloginfo("wpurl")。
"template"——当前主题的名字,表示。
"start_of_week"——天星期日历应该开始,一般设置选项。
"upload_path"——默认上传位置;设置在杂项选项。
"posts_per_page"——最大数量的帖子显示在页面上,设置在阅读选项。
"posts_per_rss"——最大数量的最近的帖子显示聚合提要;设置在阅读选项。
可以有更多的选择,这取决于你有什么插件安装。访问/ wp-admin /选项。php页面的完整列表。
强调独立的单词,小写字母只有——这将是在数据库中。

本章总结:

1. 本章主要介绍add_option()、delete_option()、 update_option(),、get_option() 四个函数的方法

2. 官方文档 参考:https://codex.wordpress.org/Function_Reference

Options

 

鲍成龙

这一篇我们在更深一步,当我们激活插件后后台会显示菜单出来,然后通过单击菜单显示自己定义好的信息。激活之后会在WordPress后台显示一个菜单,下面会有多个子菜单,如下图:

1. 在WordPress后台添加一个同级主菜单,在主菜单下添加子菜单

WordPress插件制作教程(三): 添加菜单的方法

// add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position ); 
// 官方文档: http://codex.wordpress.org/Function_Reference/add_menu_page
// 关于参数:
// $page_title:(字符串) (必须) 这个参数是子菜单的标题,将会显示在浏览器的标题栏,默认为空;
// $menu_title:(字符串) (必须) 显示的菜单名称,默认为空;
// $capability:(字符串) (必须) 用户权限,定义了具有哪些权限的用户会看到这个子菜单(权限部分请看文章结尾处),默认为空;关于用户权限的官方文档:http://codex.wordpress.org/Roles_and_Capabilities
// $menu_slug:(字符串) (必须) 显示在URl上面的菜单名称,默认为空;
// $function:返回的方法名称;
// $icon_url:(字符串) (可选) 显示的菜单图标,可以使用plugin_dir_url( __FILE__ ),图标宽高为16像素;
// $position:(整数) (可选) 显示菜单的位置。常用位置,4或者59或者99。
// add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function );
// 官方文档: http://codex.wordpress.org/Function_Reference/add_submenu_page
// 关于参数:
// $parent_slug:(字符串) (必须)顶级菜单名称,可以在顶级菜单中加入我们的子菜单,也可以在自定义顶级菜单中加入子菜单;(也就是 add_menu_page() 函数中的 $menu_slug 参数)
// $page_title:(字符串) (必须) 这个参数是子菜单的标题,将会显示在浏览器的标题栏,默认为空;
// $menu_title:(字符串) (必须) 显示的菜单名称,默认为空;
// $capability:(字符串) (必须) 用户权限,定义了具有哪些权限的用户会看到这个子菜单(权限部分请看文章结尾处),默认为空;关于用户权限的官方文档:http://codex.wordpress.org/Roles_and_Capabilities
// $menu_slug:(字符串) (必须) 显示在URl上面的菜单名称,默认为空;
// $function:所有调用的函数名称,通过调用这个函数来显示这个子菜单页面的内容。
// 显示主菜单和子菜单
add_action('admin_menu','add_settings_menu');
function add_settings_menu() {
    add_menu_page(__('自定义菜单标题'), __('测试菜单'), 'administrator',  __FILE__, 'my_function_menu', false, 100);
    add_submenu_page(__FILE__,'子菜单1','测试子菜单1', 'administrator', 'your-admin-sub-menu1', 'my_function_submenu1');
    add_submenu_page(__FILE__,'子菜单2','测试子菜单2', 'administrator', 'your-admin-sub-menu2', 'my_function_submenu2');
    add_submenu_page(__FILE__,'子菜单3','测试子菜单3', 'administrator', 'your-admin-sub-menu3', 'my_function_submenu3');
}
function my_function_menu() {
  echo "<h2>测试菜单设置</h2>";
}
function my_function_submenu1() {
   echo "<h2>测试子菜单设置一</h2>";
}
function my_function_submenu2() {
    echo "<h2>测试子菜单设置二</h2>";
}
function my_function_submenu3() {
    echo "<h2>测试子菜单设置三</h2>";
}

2. 在WordPress后台外观菜单里面添加一个子菜单

WordPress插件制作教程(三): 添加菜单的方法

// add_theme_page( $page_title, $menu_title, $capability, $menu_slug, $function );
// 官方文档: http://codex.wordpress.org/Function_Reference/add_theme_page
// 关于参数:
// $page_title: (string) (required) 显示菜单的标题,将会显示在浏览器的标题栏,默认为空;
// $menu_title: (string) (required) 显示的菜单名称,默认为空;
// $capability: (string) (required) 用户权限,定义了具有哪些权限的用户会看到这个子菜单(权限部分请看文章结尾处),默认为空;关于用户权限的官方文档:http://codex.wordpress.org/Roles_and_Capabilities
// $menu_slug: (string) (required)  显示在URl上面的菜单名称. 默认为空;
// $function: (callback) (optional) 通过调用这个函数来显示这个子页面的内容。 Default: ' '
//在WordPress后台外观菜单里面添加一个子菜单
add_action('admin_menu', 'appearance_submenu');
function appearance_submenu() {
  add_theme_page(__('插件设置'), __('插件设置'), 'administrator', 'your-unique-identifier', 'add_appearance_submenu');
}
function add_appearance_submenu() {
  echo '<div><p>这儿就是主题插件设置的地方.</p></div>';
}

3.  在WordPress后台仪表盘处添加一个子菜单

WordPress插件制作教程(三): 添加菜单的方法

// add_dashboard_page( $page_title, $menu_title, $capability, $menu_slug, $function);
// 官方文档: http://codex.wordpress.org/Function_Reference/add_dashboard_page
// 关于参数:
// $page_title: (string) (required) 显示菜单的标题,将会显示在浏览器的标题栏,默认为空;
// $menu_title: (string) (required) 显示的菜单名称,默认为空;
// $capability: (string) (required) 用户权限,定义了具有哪些权限的用户会看到这个子菜单(权限部分请看文章结尾处),默认为空;关于用户权限的官方文档:http://codex.wordpress.org/Roles_and_Capabilities
// $menu_slug: (string) (required)  显示在URl上面的菜单名称. 默认为空;
// $function: (callback) (optional) 通过调用这个函数来显示这个子页面的内容。 Default: ' '
// 在WordPress后台仪表盘处添加一个子菜单
add_action('admin_menu', 'dashboard_submenu');
function dashboard_submenu() {
    add_dashboard_page(__('仪表盘设置'), __('仪表盘设置'), 'read', 'your-unique-identifier', 'add_dashboard_submenu');
}
function add_dashboard_submenu() {
  echo '<div><p>这儿就是仪表盘菜单设置的地方.</p></div>';
}

4. 在WordPress后台评论处添加一个子菜单

WordPress插件制作教程(三): 添加菜单的方法

// add_comments_page( $page_title, $menu_title, $capability, $menu_slug, $function);
// 官方文档: http://codex.wordpress.org/Function_Reference/add_comments_page
// 关于参数:
// $page_title: (string) (required) 显示菜单的标题,将会显示在浏览器的标题栏,默认为空;
// $menu_title: (string) (required) 显示的菜单名称,默认为空;
// $capability: (string) (required) 用户权限,定义了具有哪些权限的用户会看到这个子菜单(权限部分请看文章结尾处),默认为空;关于用户权限的官方文档:http://codex.wordpress.org/Roles_and_Capabilities
// $menu_slug: (string) (required)  显示在URl上面的菜单名称. 默认为空;
// $function: (callback) (optional) 通过调用这个函数来显示这个子页面的内容。 Default: ' '
// 在WordPress后台评论处添加一个子菜单
add_action('admin_menu', 'comments_submenu');
function comments_submenu() {
    add_comments_page(__('评论菜单'), __('我的评论'), 'read', 'your-unique-identifier-comments', 'add_comments_submenu');
}
function add_comments_submenu() {
    echo '<div><p>这儿就是评论菜单设置的地方.</p></div>';
}

5. 以上介绍了不同的显示方法和显示位置。除此之外还有

add_posts_page();      // 在文章处添加子菜单
add_media_page();      // 在媒体处添加子菜单
add_links_page();      // 在链接处添加子菜单
add_pages_page();      // 在页面处添加子菜单
add_plugins_page();    // 在插件处添加子菜单
add_users_page();        // 在用户处添加子菜单
add_management_page(); // 在工具处添加子菜单
add_options_page();    // 在设置处添加子菜单
// 这些都是在WordPress后台添加菜单以及子菜单的方法。大家可以根据自己的需要来进行选择

最后附上:各个用户角色所具有的权限,可以参看这个对应关系表:Capability vs. Role Table,横坐标是用户角色,纵坐标是用户权限,中间蓝色高亮部分为各个角色所拥有的权限。

本章总结:

1. 分别在WP后台的,主菜单、外观菜单、仪表盘菜单、评论菜单处,添加菜单级子菜单

2. 有关本章所涉及到的函数参考,官方文档:https://codex.wordpress.org/Function_Reference

 

鲍成龙

这一篇简单给大家写一个插件样例,让大家有一个基本的印象。这个插件的样例就是当你激活这个插件后会在你的每篇文章中插入一段自己定义好的内容,比如你想插入版权信息,订阅信息等等,下面就来简单写这个给每篇文章后面添加版权信息的方法。如下面代码:

<?php
/**
 * @package 添加版权信息
 * @version 1.0
 */
/*
Plugin Name: 添加版权信息
Plugin URI: http://www.cnblogs.com/fxmbz/4059745.html
Description: 这是一款简单的插件样例,将自己定义好的内容显示每篇文章后面
Author: myname
Version: 1.0
Author URI: http://www.cnblogs.com/fxmbz
*/
// 当加载文章内容的时候,执行添加版权信息的方法
add_action('the_content', 'add_copyright_info');
/**
 * [add_copyright_info 输出内容后连上要显示的版权信息,简单设置增加版权信息的内容的样式]
 * @param [type] $content [string]
 */
function add_copyright_info ($content){
    $content .= '<div style="clear:both; border-top:1px dashed #e0e0e0; padding:10px 0 10px 0; font-size:12px;">版权所有©转载必须以链接形式注明作者和原始出处:<a href="'.get_bloginfo("home").'" title="点击去首页">'.get_bloginfo("name").'</a> » <a title="本文地址" href="'.get_permalink().'">'.get_the_title().'</a></div>' ;
    return $content;
}
?>

在插件所在文件夹(wp-content/plugins/)创建一个文件,比如叫add_copyright.php然后将上面的代码放到这个文件里面。接着刷新WordPress后台点击插件菜单看是否存在这个插件名称,如果有激活一下,然后你再去wp前台页面看每篇文章内容后面都会有定义好的信息显示出来了。这样一个非常简单的插件就做好了。有的朋友可能会问这么简单的方法也需要做成插件吗? 是的,如果你将里面的

// 当加载文章内容的时候,执行添加版权信息的方法
add_action('the_content', 'add_copyright_info');
/**
 * [add_copyright_info 输出内容后连上要显示的版权信息,简单设置增加版权信息的内容的样式]
 * @param [type] $content [string]
 */
function add_copyright_info ($content){
    $content .= '<div style="clear:both; border-top:1px dashed #e0e0e0; padding:10px 0 10px 0; font-size:12px;">版权所有©转载必须以链接形式注明作者和原始出处:<a href="'.get_bloginfo("home").'" title="点击去首页">'.get_bloginfo("name").'</a> » <a title="本文地址" href="'.get_permalink().'">'.get_the_title().'</a></div>' ;
    return $content;
}

代码直接放在主题的Functions.php文件里面也是可以工作的,这样就减少了插件的使用次数,感兴趣的可以去试试。

通过这个简单样例,制作插件其实不是你想的那么难,但是你需要有好的PHP基础,以及要更多的去浏览官网的插件文档。在以后的文章中我会把这些插件比较常用的函数介绍一下。给大家提供更好的帮助。

本章总结:

1. 创建一个插件,功能是 在文章内容后面 添加一个版权信息

2. 简单插件的文件也可以跟随主题一并启用,需要将插件内的代码放置在 wordpress/wp-content/themes/twentyfourteen(当前启用主题文件夹)/functions.php文件中

WordPress插件制作教程(二): 编写一个简单的插件

 

鲍成龙

相信大家都知道插件的安装文件在什么地方吧,没错就在WP-Content->plugins里面,我们所安装的插件都存放在了这个文件夹里面。当我们刚开始搭建好WordPress网站的时候,里面会默认提供两个插件,一个是Akismet(过滤垃圾评论插件)和一个hello插件(显示歌词的插件)。我们可以打开hello.php这个文件,这个插件相当于我们制作插件的入口,通过查看里面的内容,就可以知道创建一个插件的方法。如下:

<?php
/**
 * @package Hello_Dolly
 * @version 1.6
 */
/*
Plugin Name: Hello Dolly
Plugin URI: http://wordpress.org/plugins/hello-dolly/
Description: This is not just a plugin, it symbolizes the hope and enthusiasm of an entire generation summed up in two words sung most famously by Louis Armstrong: Hello, Dolly. When activated you will randomly see a lyric from <cite>Hello, Dolly</cite> in the upper right of your admin screen on every page.
Author: Matt Mullenweg
Version: 1.6
Author URI: http://ma.tt/
*/
// 上面分别是 插件的名称,插件URL地址,插件描述,插件作者,插件版本,作者地址. 这些内容使用 '/*  */' 注释符号括住

这里要注意的是你创建的插件名称和插件文件夹名称必须是唯一的,独一无二的,这样避免与其他插件发送冲突。可以去Google或者百度先验证一下这个名字到底是不是独一无二的。还有就是你的取的插件名字得让别人明白你的插件是干什么的,文件夹名称不能使用中文名称,下面就简单的说一下流程。

首先你需要考虑所制作插件的复杂度,如果很简单可以直接创建一个文件,如果涉及的文件较多,需要创建一个文件夹。不管哪种需要名称的唯一性,比如创建一个插件文件夹名为my_plugin,然后在文件中创建下面的信息。

/**
 * @package Hello_Dolly
 * @version 1.6
 */
/*
Plugin Name: My Plugin
Plugin URI: http://www.myplugin.com
Description: 我制作的第一个WP插件
Author: myname
Version: 1.0
Author URI: http://www.cnblogs.com/fxmbz
*/

标准的插件信息至少要有插件名称,这样WordPress才能识别你的插件。其他信息将显示在控制面板插件管理页面中。 标准插件信息对各行顺序没有要求。 创建好之后你的后台便会出现你刚刚创建的插件。这样你的插件就算创建成功了,还有一般在插件信息的下面可以添加版权信息。

/*
  Copyright 年份  作者名  (email : 你的邮箱)
  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or
  (at your option) any later version.
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */

如果大家想把插件提交到WordPress官网(插件提交与推广参考:https://codex.wordpress.org/Plugin_Submission_and_Promotion),或者给用户有一个很好的说明。可以添加一个名称为 Readme.txt 的文件。里面可以介绍插件的功能、安装方法、使用说明、适用的WordPress版本、插件更新信息等。

插件的创建还是比较容易的。大家可以根据自己的习惯和需求添加一些其它内容,比如可以写一个html页面专门来介绍你的插件。还有就是在开始制作插件之前多多研究下已有插件的写法,每个插件的制作方法千变万化,如果有不错的方法要及时做好总结。这样我们在开发的过程中可以少走很多弯路。

本章总结:

1. WordPress插件,文件放置的目录:wordpress/wp-content/plugins/myplugin/myplugin.php

2. WordPress插件,的声明范本

3. 实现简单的插件功能(在wp后台头部输出自定义字符串)

/**
 * @package My Plugin
 * @version 1.6
 */
/*
Plugin Name: My Plugin
Plugin URI: http://www.cnblogs.com/fxmbz/p/4059678.html
Description: 我制作的第一个WP插件,这个插件就是在后台页面的头部显示一段文字
Author: zhangxl
Version: 1.0
Author URI: http://www.cnblogs.com/fxmbz
*/
/*
  Copyright 年份  作者名  (email : 你的邮箱)
  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or
  (at your option) any later version.
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */
// 在wp后台头部输出自定义的字符串
add_action('admin_head', 'my_first_plugin');
function my_first_plugin() {
    echo '<h1>我制作的第一个WP插件</h1>';
}

 

鲍成龙

register_taxonomy()函数为自定义的Post type添加自定义分类功能。

语法结构

<?php register_taxonomy($taxonomy, $post_type, $args); ?> //为自定义的Post type添加自定义分类功能

参数

$taxonomy添加的类的名称

$post_type注册的自定义类型

$labels的详细参数

‘name’ – 分类的通用名称,通常为复数
‘singular_name’ – 此分类法的一个对象的名称
‘search_items’ – 搜索项目文字。默认为__(’搜索标签’)或__(’搜索类别’)
‘popular_items’ – 热门项目文字。默认为__(’热门标签’)或null
‘all_items’ – 所有项目文本。默认为__(’所有标签’)或__(’所有类别’)
‘parent_item’ – 父项文本。此字符串不用于非分层分类法,例如帖子标记。默认值为null或__(’父类别’)
‘parent_item_colon’ – 与结果相同parent_item,但:结尾为冒号,__(’父类别:’)
‘edit_item’ – 编辑项目文本。默认为__(’编辑标签’)或__(’编辑类别’)
‘update_item’ – 更新项目文本。默认为__(’更新标签’)或__(’更新类别’)
‘add_new_item’ – 添加新项目文本。默认为__(’添加新标签’)或__(’添加新类别’)
‘new_item_name’ – 新项目名称文本。默认为__(’新标签名称’)或__(’新类别名称’)
‘separate_items_with_commas’ – 分类项元框中使用逗号文本的单独项目。此字符串不用于分层分类法。默认值为__(’带逗号的单独标签’)或null
‘add_or_remove_items’ – 添加或删除项目文本,并在禁用JavaScript时在元框中使用。此字符串不用于分层分类法。默认值为__(’添加或删除标记’)或null
‘choose_from_most_used’ – 从分类法元框中使用的最常用文本中进行选择。此字符串不用于分层分类法。默认值为__(’从最常用的标签中选择’)或null
‘menu_name’ – 菜单名称文字。此字符串是提供菜单项的名称。默认为name的值

$args的详细参数

public- 否应在管理UI中公开此分类

  1. show_ui – 是否生成用于管理此分类的默认UI。默认值:如果未设置,则默认为public参数的值
  2. show_in_nav_menus – true使此分类在导航菜单中可供选择,默认值:如果未设置,则默认为public参数的值
  3. show_tagcloud – 是否允许Tag Cloud小部件使用此分类,默认值:如果未设置,则默认为show_ui参数的值
  4. 增加几个参数类型。分别是
    show_in_rest ,rest_baserest_controller_class。第一个参数可以理解为是否在 REST API 中显示,所以参数值必须是 true;第二个参数可以理解为通过哪个 REST API 显示数据,所以参数值最好是自定义文章类型的别名,且必须是英文或是拼音,比如:bbs;第三个参数可以理解为采用哪个 REST API 的控制类,所以参数值必须是使用文章的控制类:WP_REST_Posts_Controller。加上这三个参数项,基本上自定义文章类型的 REST API 就创建成功了。
<?php$labels = array(
        'name' => '产品分类',
        'singular_name' => '产品分类',
        'search_items' =>  '搜索产品' ,
        'all_items' => '所有产品' ,
        'parent_item' => null,
        'parent_item_colon' => null,
        'edit_item' => '编辑产品' ,
        'update_item' => '更新产品' ,
        'add_new_item' => '添加产品' ,
        'new_item_name' => '新产品',
        'separate_items_with_commas' => '' ,
        'add_or_remove_items' => '添加或删除',
        'choose_from_most_used' => '从经常使用的类型中选择',
        'menu_name' => '产品分类',
    );
    register_taxonomy(
        'products', array('product'),
        array(
            'labels' => $labels,
            'hierarchical' => true,
            'show_ui' => true,
            'query_var' => true,
        )
    );?>

前台调用

自定义分类法的分类列表页面模板文件是taxonomy.php或taxonomy-{taxonomy_slug}.php,taxonomy.php是所有自定义分类法默认调用的模板文件,taxonomy-{taxonomy_slug}.php则是指定自定义分类法调用的模板文件,比如本教程中创建的自定义分类法products,使用taxonomy-products.php文件即可指定调用。

TIPS

强调一点,添加过新的自定义分类之后一定要更新下固定连接,只需要点击保存设置就行,不然前台是调用不出来的。

 

鲍成龙

因为昨天的操作失误导致了一个bug…… 懒得排查了,正好有30号的数据备份,直接覆盖算了 。 

长个记性。

鲍成龙

上网的时候我们会发现很多网站都有繁体版本,通过导航栏上的一个按钮就可以把网页上的文字从简体中文变成繁体中文。同时,通过浏览博客的访客地域统计发现有相当多的台湾以及香港地区的读者,而他们很可能不能识别大多数简繁体不同的中文,因此为博客添加一个简繁转换是非常必要的。虽然谷歌浏览器可以添加一个语言转换插件或者自带语言转换功能,但一来转换有时非常不稳定,可能出现服务器错误,而来并非所有访客都使用Chrome浏览器。因此我介绍的这个简繁转换,是通过js的方式实现的。下面我就以WordPress为例说明一下。

 

1、下载简繁转换js文件

 

下载地址:

[button url="https://baochenglong.cn/wp-content/uploads/2020/03/zh-cn-tw.zip" types="down"]zh-cn-tw[/button]

2、将下载的 zh-cn-tw.js 文件放置网站服务器一定目录下,例如我放在使用的主题的javascripts文件夹下

 

3、打开主题的 footer.php 文件,添加以下代码引入js

<script src="/zh-cn-tw.js"></script>

当然,src值是根据你放置js位置决定的

 

4、在所需要添加简繁转换按钮的地方加入以下代码

<a id="StranLink" class="class">繁體</a>

这个 id 一定要是 StranLink,class由自己决定,并可以自定义样式,或者也可以用一个 div 包围起来再自定义样式。

鲍成龙

有时候我们需要用到is_home()来判断是不是wordpress的首页,从而进行一些相关配置,但是有一点需要注意,当你的首页不是默认的index.php的时候,比如是在后台指定了一个页面。这种情况下is_home也会失效。

也就是说这样子的情况下就不能再用is_home来判断了。而是要用is_front_page来进行判断。is_front_page是判断当前页是不是指定的首页。

记录

 

鲍成龙

我喜欢把喜欢的东西送给喜欢的人

鲍成龙
<script type="text/javascript">
setTimeout(function(){//黑衣探花定时器 
$(".jinsom-slider").css("display","none");//将图片的display属性设置为none
},
5000);//设置5000毫秒即5秒
</script>

鲍成龙
html{
 filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);
    -webkit-filter: grayscale(100%);
    -moz-filter: grayscale(100%);
    -ms-filter: grayscale(100%);
    -o-filter: grayscale(100%);
    filter: grayscale(100%);
    filter: gray;
}
鲍成龙

域名邮箱申请地址:http://ym.163.com/

 

路径:登陆模块→邮件配置

 

邮件主机:smtp.ym.163.com

 

普通端口:25

 

SSL端口:994

 

邮件授权码/密码:填写你的域名邮箱登陆密码即可