我想收集存储在短代码页面中的短代码的所有属性,然后将它们全部输出。我在插件中执行这些操作。
1.)在init中设置全局变量。php==>$allShortcodeAtts=数组();
2.)将ATT存储在钩子中的全局变量中
function wpdocs_bartag_func( $atts ) {
$atts = shortcode_atts( array(
\'foo\' => \'no foo\',
\'baz\' => \'default baz\'
), $atts, \'bartag\' );
global $allShortcodeAtts;
$allShortcodeAtts[] = $atts;
/* do other stuff */
return "foo = {$atts[\'foo\']}";
}
function register_shortcodes() {
add_shortcode ( \'bartag\', \'wpdocs_bartag_func\' );
}
add_action ( \'init\', \'register_shortcodes\', 10 );
3.)post\\u内容中的存款短代码=>;[bartag foo=“bar1”][bartag foo=“bar2”]
4)输出短代码的所有变量
function after_register_shortcodes(){
global $allShortcodeAtts;
var_dump($allShortcodeAtts);
}
add_action ( \'init\', \'after_register_shortcodes\', 999 );
全局变量中未存储任何属性。我不明白为什么?
SO网友:Abhik
只有在post内容(或数据库中保存的任何内容)中添加使用过的shorcodes,才能检索它们。如果在模板文件中硬编码,则无法检索它们(TBH,可以,但这不是这里的问题)。此代码可以帮助您获取帖子内容中使用的短代码。
function wpse387291_get_shortcodes() {
global $post;
$pattern = get_shortcode_regex();
if ( preg_match_all( \'/\'. $pattern .\'/s\', $post->post_content, $matches ) {
//$matches will hold the shortcodes if any
echo \'<pre>\' . print_r( $matches, true ) . \'</pre>\';
}
}
add_action( \'wp\', \'wpse387291_get_shortcodes\' );
你可以使用后面的任何钩子
wp
.