WordPress 中的占位符

评论(0)

其实标题应该叫PHP中的占位符,我们在写WordPress主题或插件代码的时候难免会碰到printf();或者sprintf();这样的函数,随之而来的就是%1$s 、%2$s 、%3$s 、%4$s 等等等等,看的大家是一头雾水,好吧我承认作为php盲的我确实是一头雾水,
在写这个主题的时候部分代码借鉴了 WordPress 默认主题 Twenty Eleven 中的代码(好吧我承认是大量借鉴了),在评论部分我们时常会看到这样的代码

sprintf(//为便于解释代码已简化
     _(
        '%1$s on %2$s Said:','Twenty Eleven'),
          get_comment_author_link(),
          get_comment_time('','',false) );

printf();或者sprintf()这两个函数定义在网上很多,不知道定义的可以谷哥也可以度娘,下面的是通俗版的解释办法,也就是我所理解的解释。
首先需要解释_e()和_()这样的函数是为了将程序本地化——就是翻译的意思,简单的说就是这样编写代码可以直接用翻译器将整个主题或插件进行人工翻译,不需要懂PHP 或者 HTML,直接由一个程序接口进行翻译。
printf();或者sprintf()函数是PHP的一种输出语法,特别之处在于可以用占位符%1$s。。。。。%1$s就是占位符。下面开始代码

sprintf(//
     _('%1$s on %2$s Said:','Twenty Eleven'),//本行的意思是 将 《Twenty Eleven》主题下 %1$s on %2$s Said:这句话送入翻译程序接口,明白?
          get_comment_author_link(),//对第一个占位符也就是 %1$s 进行解释—也就是替换。
          get_comment_time('','',false) ////对第二个占位符也就是 %1$s 进行解释。);

明白了上面的我们就开始进阶咯~

printf( __( '%1$s on %2$s <span class="says">said:</span>', 'twentyeleven' ),
sprintf( '<span class="fn">%s</span>', get_comment_author_link() ),//这整个一行用来替换%1$s,还要注意这一行里面的占位符 %s = get_comment_author_link()
sprintf( '%3$s<a href="%1$s">#%2$s</a>',//以下全部代码用来替换%2$s , 内部结构自行参悟吧 文字很不好解释。
	esc_url( get_comment_link( $comment->comment_ID ) ),
	$trackbackcount,
	/* translators: 1: date, 2: time */
	sprintf( __( '%1$s - %2$s', 'twentyeleven' ), get_comment_date( 'Y/n/j' ), get_comment_time('','',false) )));

————————–
2011.11.16 续
————————–
最近几天优化这个主题的头部SEO部分发现使用printf()和sprintf()等格式输出的函数来输出内容,会减少很多用 echo 或 print 所必要的拼接字符串 带来的麻烦。





转载请注明转自: WordPress 中的占位符