博客建立已经一年有余了,建立之初只为给闲暇的自己找点儿事情做,督促怠惰的自己不断学习。站内分享的各类资源或多或少都有一些,其中因为博主初入站长圈,对建站之事所知甚少,因此站内分享的主题修改相关文章偏多一些,而在这一年多的时间里,有不少同样喜好折腾的朋友们对于主题修改提出了不少疑问,疑问大多是由于不同主题之间的差异造成的。而对于不同主题我们不可能要求主题作者们将其之间的差异统一起来。

本博目前使用的 DUX 主题后台设置选项是在 OptionFramework 框架上建立起来的,分享的主题修改相关内容,凡涉及后台自定义选项的也多半依此框架。然而即使同样使用该框架做后台的主题也多有自己的自定义 Options Framework 输出方式,所以为了避免大家在主题修改时不清楚框架的输出方式而导致修改代码错误,网站崩溃,功能无法实现。这里我统一另设一输出方式,大家只需将以下代码丢到主题 functions.php 文件中,然后继续修改主题应当是不会再出现什么错误 了。

<?php
/**
 * Helper function to return the theme option value.
 * If no value has been saved, it returns $default.
 * Needed because options are saved as serialized strings.
 *
 * Not in a class to support backwards compatibility in themes.
 */
if ( ! function_exists( 'QGG_options' ) ) :
function QGG_options( $name, $default = false ) {

	$option_name = 'dux';

	// Gets option name as defined in the theme
	if ( function_exists( 'optionsframework_option_name' ) ) {
		$option_name = optionsframework_option_name();
	}

	// Fallback option name
	if ( '' == $option_name ) {
		$option_name = get_option( 'stylesheet' );
		$option_name = preg_replace( "/\W/", "_", strtolower( $option_name ) );
	}

	// Get option settings from database
	$options = get_option( $option_name );

	// Return specific option
	if ( isset( $options[$name] ) ) {
		return $options[$name];
	}

	return $default;
}
endif;
?>

另外,为了避免大家在添加完后台设置选项后找不到选项位置,日后所有放于 options.php 文件中的代码请放于以下代码之后,没有的话请复制以下代码至主题 options.php 文件中去:

<?php
/**
  * 蝈蝈自定义后台设置
  * URL:https://www.blog.quietguoguo.com
*/
    $options[] = array(
        'name' => __('蝈蝈功能', 'QGG'),
        'type' => 'heading');
?>

以上。