Wordpress checked="checked" 语法

Wordpress checked="checked" syntax

才几周,我就为自己开发了一个简单的插件,用于在菜单中显示社交分享按钮。参考 Building Your Own Social Sharing Plugin for WordPress.

至此,插件创建成功。但我对语法有疑问,为什么如果我在程序中添加以下语法,checked="checked" 将显示两次。

echo "<input type='checkbox' name='social-share' value='1' " . checked(1, get_option('social-share'), true) ." /> "; 

之后,我找到了另一个代码来防止这种情况发生。

?>
  <input type="checkbox" name="social-share" value="1" <?php checked(1, get_option('social-share'), true); ?> /> Check for Yes
<?php

Function Reference/checked displaying checked='checked'

checked( '1', get_option( 'wwo_enable_'.$lrole ), false )

不知道有没有人能告诉我为什么用HTML格式显示<?php checked(1, get_option('social-share-wechat'), true); ?>语法不会显示两次?

您看到了意外的结果,因为您正在回显一个已经生成输出的函数。

checked() 的第三个参数是 'echo',它决定了函数应该输出一个值还是 return。您需要该函数 return 在您使用它的上下文中的值。

echo '<input type="checkbox" name="social-share" value="1" ' . checked( 1, get_option( 'social-share' ), false ) . '/>'; 

https://codex.wordpress.org/Function_Reference/checked

您替换它的代码处理方式不同:

<input type="checkbox" name="social-share" value="1" <?php checked(1, get_option('social-share'), true); ?> />

这里您不再回显 checked() 的结果,因此您确实希望它生成输出,因此将第三个参数设置为 true 是正确的。

请你试试下面的东西:

<input type="checkbox" name="social-share" value="1" <?php if ( 1 == get_option('social-share') ) echo 'checked="checked"'; ?> >