ACF esnek içeriğine dayalı olarak dosyaları oluşturma ve yeniden adlandırma

Forumlar WordPress Geliştirme ACF esnek içeriğine dayalı olarak dosyaları oluşturma ve yeniden adlandırma

  • Post
    admin
    Anahtar yönetici

    WordPress’te, esnek içerik alanlarını kullanarak bir sayfa oluşturucu oluşturmak için ACF kullanıyorum. Manuel olarak oluşturduğum her bileşen için _component-name.scss ve onu ana SCSS dosyama ekliyorum. Bu iyi ama hataya açık.

    Bunu göz önünde bulundurarak ACF filtrelerine bakıyordum ve orada olduğunu gördüm. acf/update_field bu yüzden amacım, esnek içerik alanı güncellendiğinde düzenler dizisinde döngü yapmak ve düzen adını kullanarak scss dosyaları oluşturmaktı, çünkü o zaman unutamadım.

    Karşılaştığım bir sorun, oluşturmanın tamamen iyi olması, ancak bir düzeni yeniden adlandırdığınızda, ilgili scss dosyasının adını gerçekten güncellemek istiyorum, ancak daha önce adın ne olduğunu bilmiyorum.

    İşte oluşturmayı idare eden girişimim tamam, ancak yeniden adlandırma konusunda şaşkınım.

    add_filter('acf/update_field', 'create_css_files', 10, 1);
    
    /**
     * When ACF Fields are saved, check to see if it was the page builder,
     * if it was, attempt to create a new scss file for any new elements within our page builder.
     * Note that get_stylesheet_directory gets the root of the current theme.
     *
     * @param [type] $field
     *
     * @return void
     */
    function create_css_files($field)
    {
        if ($field['name'] == 'page_builder_elements') {
            foreach ($field['layouts'] as $layout) {
                $name = $layout['name'];
    
                // Only allow letters, numbers, hyphens and underscores
                $clean_name = preg_replace('/[^A-Za-z0-9_\-]/', '', $name);
    
                // Replace underscores with hyphens in the layout name
                $clean_name = str_replace('_', '-', $clean_name);
    
                $file_path = get_stylesheet_directory() . '/resources/styles/scss/_' . $clean_name . '.scss';
    
                $directory = dirname($file_path);
    
                if (!file_exists($directory)) {
                    mkdir($directory, 0755, true);
                }
    
                if (!file_exists($file_path)) {
                    $file_handle = fopen($file_path, 'w');
                    fclose($file_handle);
                }
    
                $import_directive = "@import 'scss/$clean_name';" . "\n";
    
                $base_stylesheet_path = get_stylesheet_directory() . '/resources/styles/app.scss';
    
                file_put_contents($base_stylesheet_path, $import_directive, FILE_APPEND);
            }
        }
    
        return $field;
    }
    

1 yanıt görüntüleniyor (toplam 1)
  • Replies
    admin
    Anahtar yönetici
    Muhtemelen bunu yönetmenin en basit yolu, dizinde bulunan dosyaları ve düzen adları listesinde olmayan dosyaları çözümleyip bu dosyaları silmektir.
1 yanıt görüntüleniyor (toplam 1)
  • Bu konuyu yanıtlamak için giriş yapmış olmalısınız.