Ocultar widget para usuários não logados sem plugin (functions.php)

Estou trabalhando em um site Woocommerce WordPress.

Eu quero ocultar um widget no frontend para usuários não logados.

O widget é “filtro por preço” da Woocommerce. Também estou usando as “Opções de visibilidade do catálogo” porque não consigo exibir preços para usuários não logados.

Estou usando um tema de lona e um tema infantil.

Eu quero usar um código para inserir no meu arquivo personalizado functions.php.

Eu não quero usar um plugin.

Eu estava tentando com este código, mas não consigo concluí-lo:

// Hide Widget to non-logged user function hide_widget() { if ( is_user_logged_in() ) { } else { } } add_action( 'wp', 'hide_widget' ); 

Alguém pode me ajudar com isso?

Muito obrigado!!

Solutions Collecting From Web of "Ocultar widget para usuários não logados sem plugin (functions.php)"

Testado em vinte e quatorze e funciona.

Altere o gancho loop_start para outra posição, se necessário.

O código vai ao final do seu arquivo temas functions.php.

 function wpsites_register_widget() { register_sidebar( array( 'name' => 'Logged In Only Widget', 'id' => 'members-widget', 'before_widget' => '
', 'after_widget' => '
', ) ); } add_action( 'widgets_init', 'wpsites_register_widget' ); add_action( 'loop_start', 'logged_in_widget', 25 ); function logged_in_widget() { if ( is_user_logged_in() && is_active_sidebar( 'members-widget' ) ) { dynamic_sidebar('members-widget', array( 'before' => '
', 'after' => '
', ) ); } }

Outra solução é usar um plugin de tipo lógica widget, onde você pode adicionar o is_user_logged_in condicional () ao widget existente.

http://codex.wordpress.org/Function_Reference/is_user_logged_in https://wordpress.stackexchange.com/a/128181/9884

Fique para fora onde o widget está sendo chamado e envolva-se assim:

  if ( is_user_logged_in() ) { dynamic_sidebar( 'WIDGET' ); }