我创建了一个附加到我的用户的ACF True / False字段。这用作访问级别选项,因此如果选项为True,则会在菜单中看到一个链接,如果为false,则会看到后备链接。
下面是添加到我的functions.php中的代码iv,其中iv创建了一个短代码:“customLink”,然后将其添加到我的菜单链接中。 以下是我到目前为止的情况,希望能够展示我想要做的事情。如果用户将我们命名为'my_custom_role',则获取ACF值,如果为true,则显示一个链接,如果为false则显示另一个链接。
add_shortcode('customLink', 'cm_link');
function cm_link($atts) {
$atts = shortcode_atts(array('title' => 'Custom Link', 'fallbackurl' => '#'), $atts, 'customLink');
$advcontent = get_field('acf_field', $current_user->ID);
$user = wp_get_current_user();
if (!empty($user->roles) && is_array($user->roles)) {
foreach ( $user->roles as $role ) {
if ($role=='my_custom_role') {
if ($advcontent == 'true') {
return "<a href='/my-link/'>".$atts['title']."</a>";
}
if ($advcontent == 'false') {
return "<a>".$atts['title']."</a>";
}
}
}
}
}
我也试过以下,但没有运气:
add_shortcode('customLink', 'cm_link');
function cm_link($atts) {
$atts = shortcode_atts(array('title' => 'Custom Link', 'fallbackurl' => '#'), $atts, 'customLink');
$advcontent = $_POST['acf']['field_58061ec5608bd'];
if ($advcontent == 'true' ) {
return "<a href='/my-link'>".$atts['title']."</a>";
} else {
return "<a>".$atts['title']."</a>";
}
}
答案 0 :(得分:0)
true / false字段不会返回类似的值。如果选中它,它基本上返回一个非空值,所以你需要做get_field才能返回它是否被检查。如果已经检查过,那么你只需要
if ($advcontent) {
return "<a href='/my-link/'>".$atts['title']."</a>";
} else {
return "<a>".$atts['title']."</a>";
}
如果您希望在示例中使用true / false,则可以使用值为true或false的单选按钮。