Desativar Pesquisa do Site para Visitantes e Outros Usuários sem Função Administrador no WordPress com PHP - Bruno Devx - BR Criativus

post #4909

Desativar Pesquisa do Site para Visitantes e Outros Usuários sem Função Administrador no WordPress com PHP

Publicado em: 18/04/2024 / Atualizado em: 18/04/2024

Categorias: BlogPHPWordpressWPCode

Caso você tenha um site, que não queira usar a busca padrão do WordPress (Busca acessível pelo parâmetro “s”, por exemplo: www.seusite.com.br/?s=ola) para visitantes ou usuários que não são administradores do site, você pode adicionar esse pequeno trecho de código PHP abaixo em seu site:

// Adiciona ação para prevenir pesquisas não administrativas.
add_action(
    'parse_query',
    function ( $query, $error = true ) {
        if ( !current_user_can( 'manage_options' ) && is_search() && !is_admin() ) {
            $query->is_search       = false;
            $query->query_vars['s'] = false;
            $query->query['s']      = false;
            if ( true === $error ) {
                $query->is_404 = true;
            }
        }
    },
    15,
    2
);

// Remove o Widget de Pesquisa se não for administrador.
add_action(
    'widgets_init',
    function () {
        if ( !current_user_can( 'manage_options' ) ) {
            unregister_widget( 'WP_Widget_Search' );
        }
    }
);

// Remove o formulário de pesquisa se não for administrador.
add_filter(
    'get_search_form',
    function( $form ) {
        return current_user_can( 'manage_options' ) ? $form : '';
    },
    999
);

// Remove o bloco de pesquisa principal se não for administrador.
add_action(
    'init',
    function () {
        if ( ! function_exists( 'unregister_block_type' ) || ! class_exists( 'WP_Block_Type_Registry' ) || current_user_can( 'manage_options' ) ) {
            return;
        }
        $block = 'core/search';
        if ( WP_Block_Type_Registry::get_instance()->is_registered( $block ) ) {
            unregister_block_type( $block );
        }
    }
);

// Remove a caixa de pesquisa da barra de admin se não for administrador.
add_action(
    'admin_bar_menu',
    function ( $wp_admin_bar ) {
        if ( !current_user_can( 'manage_options' ) ) {
            $wp_admin_bar->remove_menu( 'search' );
        }
    },
    11
);

DICA EXTRA: Caso queira adicionar este código em seu site, sem precisar mexer na estrutura de pastas do tema, recomendo o uso do plugin WPCode.

Publicações recomendadas:



Link Direto

Compartilhe esse conteudo nas redes sociais ou por mensagem usando o link direto abaixo. Basta copiar.

bruno.art.br/?p=4909

ID de Referência: 4909

Sugira uma publicação

Envie uma mensagem e sugira um publicação sobre um assunto que tenha dificuldades de resolver.

Clique aqui e entre em contato