标签归档:WordPress开发

WordPress 为不同的语言添加不同的样式

WordPress 是一个多语言的内容管理系统,有完善的多语言发开 API。在开发多语言的主题或插件时,只需要使用语言包即可实现语言本地化。

但是,在实际开发中,只有语言包可能无法保证 100% 的兼容。因为语种、字体的不同,可能需要给某些语言单独添加 CSS 样式。

给不同的语言添加不同的样式只需要把下边的代码放到主题的 functions.php或者插件之中:

/**
    *WordPress 为不同的语言添加不同的样式
    *http://www.endskin.com/body-class-locale-language/
*/
function Bing_body_class_add_locale( $classes ){
    $classes[] = 'locale-' . sanitize_html_class( get_locale() );
    return $classes;
}
add_filter( 'body_class', 'Bing_body_class_add_locale' );

这样,body 标签就会在不同的语种出现不同的 Class 类。比如简体中文就会有 “locale-zh_CN”、美式英语就会有 “locale-en_US”。

这样,利用这个 Class 类,就可以给不同的语种添加不同的样式,比如下边的 CSS 代码,为简体中文单独设置了字体:

WordPress 函数:home_url()(获取首页链接)

home_url() 函数用来获取 WordPress 的首页链接。

用法

参数

$path

(字符串)(可选)在首页链接后边追加的内容,是相对链接。

默认值:None

$scheme

(字符串)(可选)链接协议,只支持 “http”,“https” 和 “relative”。

默认值:null

返回值

(字符串)返回首页 URL 加上 $path 参数。

例子

其它

此函数位于:wp-includes/link-template.php

WordPress 函数:is_sticky()(判断置顶文章)

is_sticky() 函数用来判断一篇文章是否为置顶文章。

is_sticky( $post_id );

参数

$post_id

(整数)(可选)要判断的文章 ID,默认是循环中的当前文章。

默认值:0(循环中的当前文章)

返回值

(布尔)文章是否为置顶文章。

其它

此函数位于:wp-includes/post.php

WordPress 使用 WP_Http 类发送 Http 请求

在 PHP 中发送 Http 请求(GET / POST)有很多的方法,比如 file_get_contents() 函数、fopen() 函数或者 cURL 扩展,但由于服务器的情况不同,所以不一定会兼容所有情况,这样想要发送 Http 请求则需要经过一系列的判断,非常麻烦。

不过 WordPress 提供了一个 WP_Http 的类来帮你做好兼容性的判断,你只需要调用里边的函数就能完成发送 Http 请求。下面我就简单的介绍一下这个类的常用函数。

发送 GET 请求

WordPress 错误处理:WP_Error 类

在 WordPress 的运行中难免会产生一些错误,我们不希望错误直接阻止了用户对网站的顺畅访问。

这里指的错误并不是 PHP 代码错误。而是在处理一些数据的时候产生的,尤其是处理表单数据,因为不可能所有用户都会完全按照我们的要求提交数据。

比如,在注册用户的时候需要用户填写电子邮件。用户可能会输入不符合电子邮件格式的内容,或者这个电子邮件已经有用户使用,那么就会产生一个错误,导致用户无法顺利注册。

由于错误多种多样,WordPress 使用了一个 WP_Error 类来统一错误的保存方式,有了统一的方式,插件和主题就能更好的读取和添加一些错误,也能简化错误的储存代码。

属性

$errors

用于储存所有的错误。

$error_data

储存错误的额外数据。

这些属性均为类私有(private)。

方法

get_error_codes()

获取所有错误代码。

get_error_code()

获取第一个可用的错误代码,如果没有则返回空。

get_error_messages( $code = ” )

获取一个错误的所有错误消息。

get_error_message( $code = ” )

获取一个错误的第一个错误消息。

get_error_data( $code = ” )

获取错误的额外数据,没有额外数据返回 null.

add( $code, $message, $data = ” )

添加一个错误信息。

add_data( $data, $code = ” )

添加错误的额外数据。

WP_Error( $code = ”, $message = ”, $data = ” ), __construct( $code = ”, $message = ”, $data = ” )

WP_Error 的构造函数,实例化类的时候自动运行,所有的参数都是可选的。可以直接在实例化类的时候添加一个错误。

使用方法

function Bing_send_mail( $email ){
    if( empty( $email ) ) return new WP_Error( 'empty_email', '邮箱不能为空' );
    if( !is_email( $email ) ) return new WP_Error( 'invalid_email', '邮箱格式不正确' );
    
    if( wp_mail( $email, '测试邮件', 'Hello World' ) ) return true;
 
    return new WP_Error( 'send_error', '邮件发送失败' );
}

下方是一个注册表单的处理函数,里边多次使用了 WP_Error:

WordPress 在主题启用的时候执行一些代码

很多时候我们都需要在主题启用的时候执行一些代码,比如布置一些数据库表单、跳转到设置页面等等,WordPress 本身并没有提供相关的钩子,网上也有很多五花八门的实现方法,经过我的研究,发现了可能是最优的方法,下边分享给大家:


function Bing_theme_activation(){
	if( $GLOBALS['pagenow'] != 'themes.php' || !isset( $_GET['activated'] ) ) return;
	/*
	这里就可以放置在主题启用的时候要执行的代码了,比如跳转到设置界面:
	wp_redirect( admin_url( 'options-general.php' ) );//注意修改页面地址
	die;
	*/
}
add_action( 'load-themes.php', 'Bing_theme_activation' );

 

瑞士军刀级别的WordPress开发插件——Debug Bar和Debug Bar Console

Debug Bar 是WordPress团队自己推出的一款调试工具,相比于之前介绍的Query Monitor 插件,Debug Bar 在「信息获取」类插件中,或许显得有些简陋:同样需要在管理工具栏上点击「Debug」按钮打开,但它只能显示出基本的数据库查询、缓存、错误信息和服务器软件版本等信息。

我真正推荐它的原因在于另一个插件:Debug Bar Console,使用之后可以扩展出「调试操作」功能。当你安装了 Debug Bar 之后再安装 Debug Bar Console 插件,在插件的界面中会出现一个控制台,你可以直接在上边运行 PHP 代码或者使用 SQL 操作数据库,支持代码高亮。

我就会经常在编写一个功能的时候,想要修改某些数据来调试我的代码,或者想找个地方测试函数的返回值是否正确。有了这个插件之后,就可以不用在编辑器中切换文件和光标来添加测试代码,而是直接在控制台中完成。

[freesrc srctitle=”debug-bar” srcdesc=”WordPress官方团队出品的调试插件” url=”https://www.wpxyz.com.cn/wp-content/uploads/2020/04/debug-bar.1.0.zip” id=”163″ thumbnail=”https://www.wpxyz.com.cn/wp-includes/images/media/archive.png” title=”debug-bar.1.0″]

[freesrc srctitle=”debug-bar-console” srcdesc=”基于debug-bar的一款console插件” url=”https://www.wpxyz.com.cn/wp-content/uploads/2020/04/debug-bar-console.0.3.zip” id=”162″ thumbnail=”https://www.wpxyz.com.cn/wp-includes/images/media/archive.png” title=”debug-bar-console.0.3″]