admin.php 2.36 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
<?php
namespace guaraci;
add_action( 'admin_init', function(){
    add_settings_field(
        'admin_qs__use',
        __('Parâmetro GET para aditores', 'guaraci'),
        function(){
            ?>
            <p>
                <em><?php _e('Esta opção adiciona um parâmetro GET nas urls de posts, categorias e home_url quando o acesso é de um usuário logado que tenha permissão de editar posts. Isto ajuda a resolver conflitos do cache de borda com a utilização da barra do admin do WP.', 'guaraci') ?></em>
            </p>
            <p>
                <label>
                    <input name="admin_qs__use" id="admin_qs__use" type="checkbox" value="1" class="code" <?= checked( 1, get_option( 'admin_qs__use' ), false ) ?> /> <?php _e('Adicionar parâmetro GET nas urls para os editores.', 'guaraci') ?>
                </label>
            </p>
            <?php
        },
        'general',
    );
    
    register_setting( 'general', 'admin_qs__use' );
});

    
add_action('wp', function (){
    if(current_user_can('edit_posts')){

        $post_types = get_post_types(['public' => true]);
        unset($post_types['attachment']);

32
        $param = base_convert (time() - strtotime (date('Y-m-d')), 10, 36);
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47

        add_filter('post_link', function($link, $post) use ($post_types, $param) {
            $link = urldecode($link);
            if($post->post_status != 'publish'){
                return $link;
            }
    
            if(!in_array($post->post_type, $post_types)){
                return $link;
            }

            if(substr($link, -1) != '/'){
                return $link;
            }
    
48
            if(strpos($link, "?{$param}") > 0){
49 50 51 52 53 54 55 56 57 58
                return $link;
    
            } else {
                return $link . "?{$param}"; 
            }
    
        },10000 , 2);

        add_filter('term_link', function($link) use ($param) {
            $link = urldecode($link);
59
            if(strpos($link, "?{$param}") > 0) {
60 61 62 63 64 65 66 67 68
                return $link;
    
            } else {
                return $link . "?{$param}"; 
            }
        },10000);

        add_filter('home_url', function($link) use ($param) {
            $link = urldecode($link);
69
            if(strpos($link, "?") > 0){
70 71 72 73 74 75 76 77 78
                return $link;
    
            } else {
                return $link . "?{$param}"; 
            }
        },10000);
        
    }
});