Você está procurando uma maneira de mostrar ou ocultar widgets em páginas específicas no WordPress? Embora provavelmente exista um plug-in para isso, criamos um trecho de código rápido que você pode usar para mostrar ou ocultar widgets em páginas específicas no WordPress.
A primeira coisa que você precisa fazer é obter o nome do ID do widget que deseja definir. Você pode fazer isso visualizando o código-fonte da página ou usando uma ferramenta de inspetor da Web para visualizar o ID do widget. A amostra atual está configurada para exibir o widget principal “pages” somente na página de contato. Não se esqueça de que is_page
também aceita uma matriz de nomes e IDs de páginas.
Instruções:
Tudo o que você precisa fazer é adicionar esse código ao arquivo functions.php do seu tema ou em um plug-in específico do site:
add_filter( 'widget_display_callback', 'hide_widget_pages', 10, 3 ); function hide_widget_pages( $instance, $widget, $args ) { if ( $widget->id_base == 'pages' ) { // change 'pages' to widget name if ( !is_page( 'contact' ) ) { // change page name return false; } } }
Observação: Se esta é a primeira vez que você adiciona trechos de código no WordPress, consulte nosso guia sobre como adicionar corretamente trechos de código no WordPress para não danificar acidentalmente seu site.
Se você gostou desse snippet de código, considere dar uma olhada em nossos outros artigos no site, como: 30 maneiras de ganhar dinheiro com blogs on-line e como criar um formulário do WordPress com um seletor de datas.
love this tutorial snippet, thank you!
unfortunately, i got 2 warnings:
array_merge(): Argument #2 is not an array
array_merge(): Argument #1 is not an array
it did remove the sidebars from conditional page however, even w errors.
i’m still learning PHP and not sure how to include array $args, if you could please advise… that would be wonderful.
also wondering if there’s a way to remove 1(one) or more specific widget(s), from specified sidebar without removing all.
either way, thanks for posting this snippet <3
Are you adding an array to the snippet?
Hey 🙂
Your code worked for me on all the wordpress pages, but this code didn’t work for me on the WooCommerce store page. I have a basic product search bar widget in the header on every page, but I only want it to be on the STORE page. My woocommerce store page id is 552, so I used this code:
add_filter( ‘widget_display_callback’, ‘hide_widget_pages’, 10, 3 );
function hide_widget_pages( $instance, $widget, $args ) {
if ( $widget->id_base == ‘woocommerce_product_search’ ) { // change ‘pages’ to widget name
if ( !is_page( ‘552’ ) ) { // change page name
return false;
}
}
}
When I add another page id like the About Us page id is 551 …. if I set this id, then your code will hide the product search bar on every site except the About Us page. But when I type the id of the STORE page which is 552, then the search bar is missing from all the pages, also missing from the store page of woocommerce. Can you help me please? Many thanks 🙂
You may want to double check that 552 is the correct id. If it is, you may want to reach out to WooCommerce support.
Could you let e know how to change the snippet so that I can hide several widgets on specific pages?
Awesome Joel! I’ll be looking forward to seeing more of what you’ve been working on.
Very useful code. Thanks for sharing.
No problem Sajan, Joel Worsham is going be contributing to wpsnipp.com so I’m sure he will have lots of great snippets to come.
I like it. Thanks for sharing.
Saves installing another plugin.
Very true brad, nice and simple snippet!