WordPress Snippety vol. 2

Vytvořeno: 
26. 8. 2024
25. 8. 2024
Kategorie: 
Autor: 
Jacob Korec
Snippets pomáhají ohýbat WordPress do námi požadované podoby. Druhý post s mými oblíbenými funkcemi, zaměřenými na Média a další vlastnosti.

Základní funkce

1. Přidání Google Analytics

Tento snippet přidá Google Analytics sledovací kód do záhlaví vašeho webu.

function add_google_analytics() { ?>
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-XXXXX-Y"></script>
    <script>
        window.dataLayer = window.dataLayer || [];
        function gtag(){dataLayer.push(arguments);}
        gtag('js', new Date());
        gtag('config', 'UA-XXXXX-Y');
    </script>
<?php }
add_action('wp_head', 'add_google_analytics');

Ps. Nezapomeňte na cookies lištu!

2. Odebrání widgetů z nástěnky

function customize_dashboard_for_editors_and_admins() {
    $default_widgets = [
        'dashboard_quick_press' => 'side',
        'dashboard_activity' => 'normal',
        'dashboard_right_now' => 'normal',
        'dashboard_incoming_links' => 'normal',
        'dashboard_plugins' => 'normal',
        'dashboard_recent_drafts' => 'side',
        'dashboard_primary' => 'side',
        'dashboard_secondary' => 'side',
        'dashboard_site_health' => 'normal'
    ];

    foreach ($default_widgets as $widget_id => $context) {
        remove_meta_box($widget_id, 'dashboard', $context);
    }
}
add_action('wp_dashboard_setup', 'customize_dashboard_for_editors_and_admins');

3. Gutenberg fok

Jeden z mých nejoblíbenějších řádků, pokud se chci soustředit na custom fields při tvorbě obsahu a nenarušovat jej Gutenbergem.

add_filter('use_block_editor_for_post', '__return_false', 10);

4. Zakázání aktualizací

Tento snippet vám umožní zakázat automatické aktualizace jádra WordPressu, pluginů a šablon. To může být užitečné, pokud chcete mít plnou kontrolu nad aktualizacemi na vašem webu.

// Zakázání automatických aktualizací jádra WordPress
add_filter('auto_update_core', '__return_false');

// Zakázání automatických aktualizací pluginů
add_filter('auto_update_plugin', '__return_false');

// Zakázání automatických aktualizací šablon
add_filter('auto_update_theme', '__return_false');

Média / soubory

1. Sanitace názvu nahraných médií (malá písmena)

Tento kód slouží k automatickému převodu názvů souborů na malá písmena při jejich nahrávání do WordPressu.

add_filter( 'sanitize_file_name', 'mb_strtolower' );

2. Sanitace názvu nahraných médií (pokročilejší funkce)

Tato komplexnější funkce převádí názvy souborů na malá písmena, ale také provádí další úpravy, například odstranění speciálních znaků nebo nahrazení mezer pomlčkami.

function custom_sanitize_file_name( $filename ) {
    // Převod na malá písmena
    $filename = strtolower( $filename );

    // Nahrazení mezer pomlčkami
    $filename = str_replace( ' ', '-', $filename );

    // Odstranění nežádoucích znaků
    $filename = preg_replace( '/[^A-Za-z0-9\-.]/', '', $filename );

    return $filename;
}
add_filter( 'sanitize_file_name', 'custom_sanitize_file_name', 10, 1 );

3. Přepsání stejného názvu souboru

Tento proces zaručuje, že starý soubor je nahrazen novým, aniž by se vytvořil duplicitní název souboru s příponou, jako je -1, -2, atd. To znamená, že po nahrání zůstane v médiích pouze nový soubor s původním názvem.

  1. Existující soubor je smazán: Pokud už na serveru existuje soubor se stejným názvem, je smazán z databáze i ze serveru.

  2. Nový soubor je následně nahrán: Po odstranění starého souboru se nový soubor uloží na jeho místo se stejným názvem.

function replace_uploaded_file($file) {
    $upload_dir = wp_upload_dir();
    $file_path = $upload_dir['path'] . '/' . $file['name'];

    if (file_exists($file_path)) {
        // Najděte a smažte existující přílohu se stejným názvem souboru
        $attachment_id = attachment_url_to_postid($upload_dir['url'] . '/' . $file['name']);
        if ($attachment_id) {
            wp_delete_attachment($attachment_id, true);
        }

        // Smažte existující soubor ze serveru
        unlink($file_path);
    }

    return $file;
}
add_filter('wp_handle_upload_prefilter', 'replace_uploaded_file');
  • Tento kód neřeší případ, kdy se starý soubor používá někde na webu. Pokud soubor nahradíte, odkazy na tento soubor zůstanou platné, ale obsah souboru se změní.
  • Pokud máte velký počet souborů v knihovně médií, vyhledání a smazání starých souborů může mít dopad na výkon.
  • Buďte opatrní při nasazení tohoto kódu na produkční web, zejména pokud má více uživatelů přístup k nahrávání souborů. Automatické mazání souborů může vést k neúmyslným ztrátám dat, pokud nebude použito správně.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *