希望在这里学到一些东西。
使用以下代码,我将根据一组已知的自定义术语为每个条件加载一个外部文件。我正在使用has\\u术语检查自定义税“delivery\\u选项”中的特定值。
$taxonomy = \'delivery_option\';
if(has_term( \'public-delivery\', $taxonomy ) ){
include_once( CHILD_THEME_DIR . \'/includes/sidebar-part-public.php\');
} elseif (has_term(\'onsite-delivery\', $taxonomy ) ){
include_once( CHILD_THEME_DIR . \'/includes/sidebar-part-onsite.php\');
} elseif (has_term(\'online-delivery\', $taxonomy ) || has_term(\'self-directed-delivery\', $taxonomy ) ){
include_once( CHILD_THEME_DIR . \'/includes/sidebar-part-online.php\');
} else {
echo \'<p>No custom include!</p>\'
}
它起作用了。但这是最好/最有效的方法吗?我研究过是否可能使用“开关”,但我不确定这将如何工作……”has\\u term“似乎比某些在检查term对象之前返回term对象的方法更有效。
这些术语具有层次性,应相互排斥。任何一个帖子都有一个交付选项。
劝告寻找最佳实践建议或确认我没有越轨。:)
最合适的回答,由SO网友:s_ha_dum 整理而成
如果我正确阅读了您的代码和描述,您可以将其简化为:
$taxonomy = \'delivery_option\';
$do = get_the_terms($post->ID,$taxonomy);
if (!empty($do) && !is_wp_error($do)) {
$do = array_shift($do); // assuming a single value as per the description.
$term = str_replace(\'-delivery\',\'\',$do->slug);
get_template_part(\'includes/sidebar-part\',$term);
} else {
echo \'<p>No custom include!</p>\';
}
注意,我用了WordPress的
get_template_part()
而不是PHP的
include()
因为这是包含模板文件的更正确的方法。