我正在创建一个插件来处理woocommerce产品标签。
我通过挂接到woocommerce_product_tabs
add_filter( \'woocommerce_product_tabs\', \'benz_new_product_tabs\' );
然后,我有一个基于DB meta\\u值加载选项卡标题的函数-一切正常。-我已经删除了大部分内容以节省您的时间,但我试图保留所有重要的、相关的内容。
function benz_new_product_tabs( $tabs ) {
global $post;
$benz_tab_count = get_post_meta( $post->ID, \'_tabs_total_number\', true );
for ( $x = 0; $x < $benz_tab_count; $x++ ) {
$y=$x+1;
$benz_tab_title = get_post_meta( $post->ID, "_tabs_title_$y", true );
$benz_tab_title_clean = preg_replace(\'/\\s+/\', \'-\', $benz_tab_title);
if ( strlen($benz_tab_title) > 0 ) {
$tabs[$benz_tab_title_clean] = array(
\'title\' => __( $benz_tab_title, \'woocommerce\' ),
\'priority\' => $y+50,
\'callback\' => \'benz_new_product_tab_content\'.$y
);
} // end foreach
}
return $tabs;
}
因此,这会根据需要为每个db表生成尽可能多的选项卡标题,并分配一个唯一的回调函数,然后为每个选项卡提供内容。
回调函数是我正在努力解决的问题。我想创建一个循环来生成每个回调函数和相关内容。
以下功能运行良好,但如果可能的话,我真的想让它更智能。
function benz_new_product_tab_content1() {
global $post;
$benz_tab_content = get_post_meta( $post->ID, "_tabs_content_1", true );
if (strlen($benz_tab_content) > 0) {
echo $benz_tab_content;
}
}
function benz_new_product_tab_content2() {
global $post;
$benz_tab_content = get_post_meta( $post->ID, "_tabs_content_2", true );
if (strlen($benz_tab_content) > 0) {
echo $benz_tab_content;
}
}
function benz_new_product_tab_content3() {
global $post;
$benz_tab_content = get_post_meta( $post->ID, "_tabs_content_3", true );
if (strlen($benz_tab_content) > 0) {
echo $benz_tab_content;
}
}
我的许多产品上有3个以上的标签,有时多达8个(每个客户端),所以我在插件文件中粘贴了8次回调函数块。我曾尝试将其放入for循环中,但很明显,您无法将变量连接到函数名的末尾。
让我知道你的想法,谢谢你的阅读。