如何压缩我的 repetitive/redundant php 代码?
how can I condense my repetitive/redundant php code?
我在我的 WordPress functions.php 文件中创建了一个函数,用于在您 on/viewing 自定义 post 类型的页面时突出显示多个链接。
我是php的新手,所以想请教各位大侠,如何把这段代码改得更少repetitive/redundant?
正如您在下面看到的,我有相同 post 类型的双打并且 class 语句被设置了四次。这些链接也位于两个不同的菜单位置,因此加倍了。
// filter current_page_parent to events menu link
function menu_class_filter_event($classes) {
// Remove "current_page_parent" class
$classes = array_diff($classes, array('current_page_parent'));
// If this is the "event" custom post type, highlight the correct menu items
if (in_array('menu-item-36', $classes) && get_post_type() === 'event') {
$classes[] = 'current_page_parent';
}
if (in_array('menu-item-54', $classes) && get_post_type() === 'event') {
$classes[] = 'current_page_parent';
}
// If this is the "program" custom post type, highlight the correct menu items
if (in_array('menu-item-124', $classes) && get_post_type() === 'program') {
$classes[] = 'current_page_parent';
}
if (in_array('menu-item-126', $classes) && get_post_type() === 'program') {
$classes[] = 'current_page_parent';
}
return $classes;
}
add_filter('nav_menu_css_class', 'menu_class_filter_event', 10, 2);
我在 PHP 方面不是很流利,但我可能会尝试将其全部移动到一个 if
:
// filter current_page_parent to events menu link
function menu_class_filter_event($classes) {
// Remove "current_page_parent" class
$classes = array_diff($classes, array('current_page_parent'));
$add_class =
get_post_type() === 'event' && (
in_array('menu-item-36', $classes) ||
in_array('menu-item-54', $classes))
|| get_post_type() === 'program' && (
in_array('menu-item-124', $classes) ||
in_array('menu-item-126', $classes));
if ($add_class) {
$classes[] = 'current_page_parent';
}
return $classes;
}
您可以尝试像 here 那样组合 in_array
,但我认为在这种情况下它不会增加可读性。
我在我的 WordPress functions.php 文件中创建了一个函数,用于在您 on/viewing 自定义 post 类型的页面时突出显示多个链接。
我是php的新手,所以想请教各位大侠,如何把这段代码改得更少repetitive/redundant?
正如您在下面看到的,我有相同 post 类型的双打并且 class 语句被设置了四次。这些链接也位于两个不同的菜单位置,因此加倍了。
// filter current_page_parent to events menu link
function menu_class_filter_event($classes) {
// Remove "current_page_parent" class
$classes = array_diff($classes, array('current_page_parent'));
// If this is the "event" custom post type, highlight the correct menu items
if (in_array('menu-item-36', $classes) && get_post_type() === 'event') {
$classes[] = 'current_page_parent';
}
if (in_array('menu-item-54', $classes) && get_post_type() === 'event') {
$classes[] = 'current_page_parent';
}
// If this is the "program" custom post type, highlight the correct menu items
if (in_array('menu-item-124', $classes) && get_post_type() === 'program') {
$classes[] = 'current_page_parent';
}
if (in_array('menu-item-126', $classes) && get_post_type() === 'program') {
$classes[] = 'current_page_parent';
}
return $classes;
}
add_filter('nav_menu_css_class', 'menu_class_filter_event', 10, 2);
我在 PHP 方面不是很流利,但我可能会尝试将其全部移动到一个 if
:
// filter current_page_parent to events menu link
function menu_class_filter_event($classes) {
// Remove "current_page_parent" class
$classes = array_diff($classes, array('current_page_parent'));
$add_class =
get_post_type() === 'event' && (
in_array('menu-item-36', $classes) ||
in_array('menu-item-54', $classes))
|| get_post_type() === 'program' && (
in_array('menu-item-124', $classes) ||
in_array('menu-item-126', $classes));
if ($add_class) {
$classes[] = 'current_page_parent';
}
return $classes;
}
您可以尝试像 here 那样组合 in_array
,但我认为在这种情况下它不会增加可读性。