id是否在短代码中,例如[reusable id=\'7\']
或[reusable id=7]
始终由以下人员进行解释shortcode_atts()
作为字符串,而不管整数是否在单引号中?
我正在尝试制作一个短代码,使我能够在编辑器之外使用古腾堡可重用块。我找到了一个代码片段来实现这一点,但作为wordpress开发的新手,我很难理解为什么它不起作用。到目前为止,我搜索的一个原因出现了短缺,所以大家好StackExchange!
这是我正在使用的代码片段。原始来源是here
function reusable_block_shortcode( $atts ) {
function get_reusable_block( $block_id = \'\' ) {
if ( empty( $block_id ) || (int) $block_id !== $block_id ) {
return;
}
$content = get_post_field( \'post_content\', $block_id );
return apply_filters( \'the_content\', $content );
}
$args = ( shortcode_atts( array(\'id\' => \'\'), $atts ) );
$id = $args[\'id\'];
if ( empty( $id ) || (int) $id !== $id ) {
return;
}
$content = get_reusable_block( $id );
return $content;
}
add_shortcode( \'reusable\', \'reusable_block_shortcode\' );
在仔细研究了这段代码后,我发现两个if语句都存在问题,尤其是
if( (int) $id !== $id ) {
return;
}
据我所知,if语句返回false,因为
$id
是字符串吗?我推断这是因为如果我使用非严格的等式运算(
!=
) if语句返回true,并且shortcode工作。我说得对吗?
如果是这样,id是否在短代码中,例如[reusable id=\'7\']
或[reusable id=7]
始终由以下人员进行解释shortcode_atts()
作为字符串,而不管整数是否在单引号中?我尝试过使用带单引号和不带单引号的短代码,但只有在从代码段中的if语句中删除严格的相等操作时,它才有效。
这让我觉得shortcode_atts()
总是将shortcode属性解释为字符串,这是真的吗?
如果是,那么从编码标准的角度来看,If语句的相等部分是否有必要。
我预计答案也会对布尔值和其他数据类型产生影响。提前感谢您帮助我更好地理解这一点!