如果您正在使用的短代码为短代码属性提供了一个标准格式过滤器,那么您可能可以尝试以下操作。
function filter_shortcode_atts_sectionsforce( $out, $pairs, $atts, $shortcode ) {
// is filter set and it contains our dynamic tag
if ( isset( $atts[\'filter\'] ) && false !== strpos( \'Playhouse__c=\\\'site_id\\\'\', $atts[\'filter\'] ) ) {
// get ID, could use some custom helper function here, if complex logic is required
$site_id = get_current_blog_id();
// Simple string replacement to replace dynamic part with real data
$out[\'filter\'] = str_replace( \'Playhouse__c=\\\'site_id\\\'\', "Playhouse__c=\'{$site_id}\'", $atts[\'filter\'] );
}
return $out;
}
add_filter( \'shortcode_atts_sectionsforce\', \'filter_shortcode_atts_sectionsforce\', 10, 4 );
Ot如果短代码(及其回调)是您自己的代码,那么在回调中使用上面的检查。
此外,基于https://stackoverflow.com/questions/30490175/use-wp-shortcode-as-an-attribute-in-another-shortcode, 我认为尝试在参数中使用[site\\u id]可能会破坏短代码,因为短代码解析器可能会从这些额外的括号中崩溃。这就是为什么我没有在上面的示例中包含它们。