2016-10-19 3 views
0

Я создал ACF True/False поля, которое прилагается к своим пользователям. Это используется как параметр уровня доступа, поэтому, если параметр имеет значение «Истина», он увидит ссылку в меню, если false, он увидит ссылку возврата.Если заявление для True/False поля пользователя не будет работать

Ниже приведен код IV добавил к моей functions.php, где 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>"; 
        } 
       } 
      } 
     }   
    } 

Iv также попытался ниже, но не повезло:

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>"; 
    }  
} 
+1

'print_r ($ _ POST)' отлаживать это и где и определить это '$ current_user' ?, предложить U добавить PHP error_reporting() и ошибки ЧК – devpro

ответ

0

истина/ложь поле не возвращает значение, как это. В основном это возвращает непустое значение, если оно отмечено, поэтому get_field - это все, что вам нужно сделать, чтобы вернуть, проверено или нет. Если флажок установлен, то вы просто делаете

if ($advcontent) { 
      return "<a href='/my-link/'>".$atts['title']."</a>"; 
    } else { 
      return "<a>".$atts['title']."</a>"; 
    } 

Если вы хотите, истина/ложь, как в вашем примере, вы бы использовать переключатель со значениями, установленными истинным или ложным.

Смежные вопросы