Aprenda a restringir o login de editores no WordPress por horário.

Você já precisou limitar o horário de acesso de alguns usuários em seu site WordPress?

Neste tutorial, vou te ensinar como restringir o login de editores (ou qualquer outro papel/role que você desejar) no WordPress para um determinado horário, garantindo mais segurança e controle sobre quem acessa seu site em horários específicos.


Essa função em WordPress verifica se o usuário que está tentando fazer login é um editor e se o horário atual está entre 9h e 14h, de segunda a sexta-feira. Se essas condições forem atendidas, o editor é automaticamente desconectado, redirecionado para a página inicial e o processo de login é encerrado. Você pode refinar essa funcionalidade e redirecionar para uma página contendo um aviso ou outro conteúdo.

No arquivo functions.php insira a função abaixo:

/**
 * Verifica se o papel do usuário está na lista de papéis restritos e se o horário atual está entre 9h e 14h, de segunda a sexta-feira.
 *
 * @return void
 */

function restringir_login_editor() {
    $usuario_atual = wp_get_current_user();

    if (in_array('editor', (array) $usuario_atual->roles)) {
        $horario_atual = current_time('H:i');
        $dia_semana = date('N');  // Obtém o número do dia da semana (1 para segunda, 2 para terça, etc.)

        // Se o horário estiver entre 9h e 14h e for um dia útil (segunda a sexta-feira)
        if ($horario_atual >= '09:00' && $horario_atual <= '14:00' && $dia_semana >= 1 && $dia_semana <= 5) {
            // Desloga o editor, redireciona para a página inicial e encerra o processo de login
            wp_logout();
            wp_redirect(home_url());
            exit;
        }
    }
}

// Adiciona a ação para verificar o horário e dia da semana no momento do login
add_action('wp_login', 'restringir_login_editor');

Com este simples tutorial, você aprendeu como restringir o login de editores no WordPress com base no horário atual. Essa funcionalidade pode ser útil para garantir que determinados usuários acessem o site apenas durante o horário desejado, aumentando a segurança e o controle sobre o acesso ao seu site WordPress.

Se preferir não usar código, existe um plugin que realiza a mesma ação:

Passando variáveis do PHP para javascript através do head [WordPress]

Utilizar dados fornecidos através de funções ou variáveis de PHP em algum código javascript já foi ou será uma necessidade em algum momento para quem trabalha com WordPress. existe uma função específica para trazer variáveis do backend para o front: wp_localize_script().

Vamos tomar como exemplo um código JavaScript que irá receber o ID do post. (E sim! Existem outros meios de identificar o ID do post utilizando o JavaScript, é apenas um exemplo 😊)

Começaremos pelo código PHP. Crie uma função na qual o arquivo JavaScript é registrado antes da função wp_localize_script(), caso contrário não irá funcionar.

PHP

function passar_variaveis() {
	global $post;
	wp_enqueue_script('variaveis-post-id', 'assets/src/js/global.js');
	wp_localize_script('variaveis-post-id', 'post_id', $post->ID);
 
}
add_action('wp_enqueue_scripts', 'passar_variaveis');

Também é possível passar várias variáveis ao mesmo tempo:

function passar_variaveis() {
	global $post;
         $todas_variaveis = array(
             'post_id'       => $post->ID,
              'variavel_1'   => 'var_1',
              'variavel_2'. => 'var_2'
         );
	wp_enqueue_script('variaveis-post-id', 'assets/src/js/global.js');
	wp_localize_script('variaveis-post-id', 'post_id', $post->ID);
 
}
add_action('wp_enqueue_scripts', 'passar_variaveis');

Javascript

Apenas uma variável:

var post_id = window.post_id;

Diversas variáveis:

var post_id = window.post_id;
var variavel_1 = window.variavel_1;
var variavel_2 = window.variavel_2;

Resultado – HTML

Analisando o HTML renderizado é possível ver a variável disponível dentro do <head> e pronto para ser usado pelo javascript:

<script id="variaveis-post-id">
    var post_id = 10;
</script>

Foto de Alex Andrews: https://www.pexels.com/pt-br/foto/tres-brinquedos-de-monofone-pretos-821754/

Como limitar caracteres e manter palavras inteiras em strings no PHP.

Certamente você já se deparou com a dificuldade em limitar a quantidade de caracteres e não cortar palavras em títulos e resumos.

Função limitadora

Apresento uma função que quando aplicada é capaz de limitar a quantidade de caracteres e manter as palvras intactas. Seguem dois exemplos:

Frase original:

Hoje está um belo dia de sol e vamos comemorar meu aniversário.

Frase com caracteres limitados SEM uso da função:

Hoje está um belo dia de sol e vamos comem

Frase com caracteres limitados COM uso da função:

Hoje está um belo dia de sol e vamos…

Construindo a função

<?php

function trim_title_keep_words($title, $max_lenght, $more)  {
    // Title will remain untouched if character counut is smaller than max lenght
    // O título permanecerá intacto se a quantidade de caracteres for menor que o máximo estabeleido.
    if (strlen($title) <= $max_lenght) {
        return $title;
    }
    
    // Title is trimmed and word are kept intact
    // O título é cortado mas a última palavra permanece inteira                               
    $trimmed_title = substr($title, 0, $max_lenght);
    if ( substr($trimmed_title,-1,1) != ' ' ) {
        $trimmed_title = substr($trimmed_title, 0, strrpos($trimmed_title, " "));
    }
    // Adding read more to final                              
    $trimmed_title = $trimmed_title.$more;
    return $trimmed_title;
}                

Como usar essa função

  1. Identifique os parâmetros que serão usados na função: trim_title_keep_words($title, $max_lenght, $more)

    $title -> use a função do WordPress para pegar o título

    $max_lenght -> defina quantos characteres devem ter no máximo

    $more -> Defina que símbolo quer usar para indicar que o título foi cortado. Exemplo.: …, >>, +

  2. Aplique a função e imprima o resultado: 
    $new_title = trim_title_keep_words( get_the_title(), 30, ‘…’);
    echo $new_title;

Resultado esperado:

Título cortado SEM essa função: “Olá meu mundo li…”

Título cortado COM essa função: “Olá meu mundo…”

Você pode encontrar esse código meu GitHub