(WooCommerce) Eliminarea Sidebar-ului doar pe pagina Single-Product
Creez o temă și nu doresc să afișez sidebar-ul pe pagina produsului individual (single-product).
Urmând recomandările WooCommerce, am făcut o copie a directorului "templates" (din plugin-ul woocommerce) și am instalat-o în mytheme/templates, redenumind directorul în "woocommerce". În rădăcina temei mele, am creat un fișier numit sidebar-shop.php.
Până acum am sidebar-ul afișat atât pe pagina de magazin cât și pe pagina produsului individual. Am încercat să elimin do_action('woocommerce_sidebar');
din woocommerce/single-product.php și de asemenea am încercat să creez o condiție în woocomerce/shop/sidebar.php, ceva de genul:
if (!is_page('single-product') {
get_sidebar('shop');
}
dar sidebar-ul rămâne.
Există vreo opțiune funcțională pentru a elimina sidebar-ul doar de pe pagina produsului individual?

Eticheta condițională pentru produse individuale este is_product()
add_action('template_redirect', 'remove_sidebar_shop');
function remove_sidebar_shop() {
if ( is_product('add-page-i.d-here') ) {
remove_action('woocommerce_sidebar', 'woocommerce_get_sidebar');
}
}
De asemenea, poți dori să modifici aspectul pe pagina respectivă de produs la lățime completă pentru a elimina spațiul liber și a reduce lățimea zonei de conținut folosind o clasă personalizată pentru body, pe care o poți genera și ea condițional.
Etichete condiționale WooCommerce http://docs.woothemes.com/document/conditional-tags/

is_product()
este doar un wrapper pentru is_singular('product')
. Deci, ambele funcționează exact la fel.

Ar trebui să adaugi slug-ul paginii de produs individual dacă ( is_product('t-shirt') ) {

Și cum dacă vreau să îl elimin pentru toate produsele? Adică, fără un ID specific

Aici este..
function remove_sidebar_shop() {
if ( is_singular('product') ) { // verifică dacă este o pagină singulară de produs
remove_action('woocommerce_sidebar', 'woocommerce_get_sidebar'); // elimină bara laterală WooCommerce
}
}
add_action('template_redirect', 'remove_sidebar_shop'); // atașează funcția la acțiunea template_redirect

Abhik, codul părea promițător dar nu a funcționat nici el. Mă întreb dacă "product" este ID-ul real al paginii de produs single. Oricum, mulțumesc.

function remove_storefront_sidebar() {
if ( is_product() ) {
remove_action( 'storefront_sidebar', 'storefront_get_sidebar', 10 );
}
}
add_action( 'get_header', 'remove_storefront_sidebar' );
Funcționează cu ultima versiune WooCommerce 2.5.2 De asemenea, este necesar CSS:
.single-product.right-sidebar .content-area {
float: none;
margin-right: 0;
width: 100%;
}
