2014-11-12 4 views
3

Есть ли способ скрыть пользовательские вкладки, если в поле ввода нет содержимого. Я реализую это с помощью расширенного настраиваемого поля. До сих пор вкладка по-прежнему присутствует, даже если нет контента помещаетсяСкрыть пользовательскую вкладку, если в продуктах woocommerce нет содержимого

Вот код, который я поместил в моей functions.php

add_filter('woocommerce_product_tabs', 'woo_new_direction_tab'); 
function woo_new_direction_tab($tabs) { 

// Adds the new tab 

    $tabs['direction_tab'] = array(
     'title'  => __('Direction', 'woocommerce'), 
     'priority' => 60, 
     'callback' => 'woo_new_direction_tab_content' 
    ); 

    return $tabs; 

} 


function woo_new_direction_tab_content() { 

    // The new tab content 

    echo the_field('directions'); 

} 

UPDATE

//Direction Tab 
add_filter('woocommerce_product_tabs', 'woo_new_direction_tab'); 
function woo_new_direction_tab($tabs) { 

// Adds the new tab 

    $tabs['direction_tab'] = array(
     'title'  => __('Direction', 'woocommerce'), 
     'priority' => 60, 
     'callback' => 'woo_new_direction_tab_content' 
    ); 


    return $tabs; 





} 


function woo_new_direction_tab_content() { 

    if(get_field('directions')) 
    { 
     echo the_field('directions'); 
    } 

    else 
    { 
     echo "<style>li.direction_tab_tab{ display:none !important; }</style>"; 
    } 

} 

ответ

1

Там будет скорее всего, это лучший способ сделать это, но я достиг этого в прошлом:

if(get_field('directions')) 
{ 
    echo the_field('directions'); 
} 
else 
{ 
    echo "<style>.direction_tab_tab { display:none !important; }</style>"; 
} 

Это напечатает содержимое поля «направления», если в нем есть текст, если он не распечатает css и не скроет вкладку.

+0

Добрый день, я обновил свой код в моей functions.php на основе решения, которое вы дали, но он по-прежнему показывает вкладку направления на интерфейсе :( – clestcruz

+0

@clestcruz Вам может понадобиться чтобы взглянуть на класс, который вызывается на вкладке.Я предположил, что он называется '.direction_tab_tab', он может быть другим для вас. – Howli

+0

no класс, который вы упомянули, был точно таким же. Я даже разместил li. direction_tab_tab – clestcruz

1

Самый простой способ - удалить вкладку.

Вы можете сделать это на основе содержимого текстового поля, которое в случае пустого просто использует это.

unset($tabs['direction_tab']); // Remove the additional direction tab 

И вы сделали :)

+0

Добрый день, я ищу именно то, чтобы сделать вкладку, если есть контент. Но если содержимого нет, вкладка не появится.Я не хочу удалить вкладку постоянно – clestcruz

1

Хей, у меня была такая же проблема, и нашел более красивый способ решить эту проблему. Я добавляю только вкладку, когда у нее есть контент. Возможно, это помогает всем остальным найти эту тему.

add_filter('woocommerce_product_tabs', 'woo_new_direction_tab'); 
function woo_new_direction_tab($tabs) { 

    // Adds the new tab 

    if (!empty(the_field('directions'))) { 
     $tabs['direction_tab'] = array(
      'title'  => __('Direction', 'woocommerce'), 
      'priority' => 60, 
      'callback' => 'woo_new_direction_tab_content' 
     ); 
    } 

    return $tabs; 

} 


function woo_new_direction_tab_content() { 

    // The new tab content 

    echo the_field('directions'); 

} 
0

Вы можете использовать get_field(), чтобы проверить наличие контента.

add_filter('woocommerce_product_tabs', 'woo_new_direction_tab'); 
function woo_new_direction_tab($tabs) { 

// Check if there is content and add the tab if so 
if(get_field(direction_tab)){ 
    $tabs['direction_tab'] = array(
     'title'  => __('Direction', 'woocommerce'), 
     'priority' => 60, 
     'callback' => 'woo_new_direction_tab_content' 
); 
} 

return $tabs; 

}

function woo_new_direction_tab_content() { 
    echo get_field('directions'); 
} 
0

В основном используется поле с содержимым вкладки в условно отображать вкладку. Код проверяет, пустое ли поле, если оно есть, то оно отключает вкладку, чтобы она не отображалась. Если в поле есть контент, он возвращается. Я также скорректировал содержимое вкладки с условным тоже. То есть проверьте, есть ли контент и если есть, верните вкладку. Это необязательно, так как даже без проверки вкладка не будет возвращена, если в поле нет содержимого.

add_filter('woocommerce_product_tabs', 'woo_new_direction_tab'); 
 
function woo_new_direction_tab($tabs) { 
 

 
// Adds the new tab 
 

 
    $tabs['direction_tab'] = array(
 
     'title'  => __('Direction', 'woocommerce'), 
 
     'priority' => 60, 
 
     'callback' => 'woo_new_direction_tab_content' 
 
    ); 
 
    
 
    if(empty(get_field('directions'))): 
 
    \t \t 
 
    \t unset($tabs['direction_tab']); 
 
    \t 
 
    else: 
 
    
 
     return $tabs; 
 
    \t 
 
    endif; 
 
} 
 

 
function woo_new_direction_tab_content() { 
 

 
    // The new tab content 
 
    if(get_field('directions')): 
 
     echo '<h2>Directions</h2>'; 
 
     the_field('directions'); 
 
    endif; 
 

 
}

+0

В основном вы используете поле с содержимым вкладки, чтобы условно показать вкладку. Код проверяет, пустое ли поле, если оно есть, то оно отключает вкладку, чтобы она не отображалась. Если в поле есть контент, он возвращается. Я также скорректировал содержимое вкладки с условным тоже. То есть проверьте, есть ли контент и если есть, верните вкладку. Это необязательно, так как даже без проверки вкладка не будет возвращена, если в поле нет содержимого. –

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