我正在写一个主题,我想让用户能够通过一个主题选项,为他们的网站指定一种字体Google Web Fonts.
如果用户想要嵌入一种字体,例如,News Cycle, 然后代码需要在<link>
中的标记<head>
, 在网站的CSS中。
在<link>
标记,字体用+
(加号)在名称中:
<link href=\'http://fonts.googleapis.com/css?family=News+Cycle\' rel=\'stylesheet\' type=\'text/css\'>
但是,在CSS中,没有加号:
h1 { font-family: \'News Cycle\', arial, serif; }
理想情况下,我希望用户只需将字体名称写入或粘贴到表单字段中,然后在代码中,在需要的地方用加号替换空格。
通过谷歌搜索,我认为这可以用str_replace
或者其他类似的PHP,但我是PHP新手。有人能解释一下最好的方法吗?
目前,我的标题中有相关的PHP。php看起来有点像这样:
<?php
$options = get_option(\'mytheme_theme_options\');
if( isset( $options[\'webfont\'] ) && ( !empty( $options[\'webfont\'] ) ) )
printf( "WEBFONT LINK", $options[\'webfont\'] );
?>
谢谢。
最合适的回答,由SO网友:Chip Bennett 整理而成
不是更好的解决方案是建立自己的可用字体列表,然后让用户选择要使用的字体吗?这样一来,验证就容易多了,而且您可以更好地控制如何使用/实现特定设置。
在任何情况下,您都应该能够在清理回调中执行您想要的操作,您将(大概)确保输入字符串经过清理和验证(即字符串实际对应于Google web字体名称)。
一旦您有了“有效名称”作为设置值,就很容易do a str_replace()
to replace " " with "+".
我将使用两种设置:$themename_options[\'google-webfont-css\']
保存字体系列名称(用于CSS),以及$themename_options[\'google-webfont-link\']
以保持链接参数。
因此:
$valid_input[\'google-webfont-css\'] = // validated and sanitized $input[\'google-webfont-css\'];
$valid_input[\'google-webfont-link\'] = str_replace( \' \', \'+\', $valid_input[\'google-webfont-css\'];
return $valid_input;
(这在验证回调函数中。)