Motyw potomny i function.php

Dział dot. modyfikacji motywów Wordpress oraz rozwiązań napotkanych problemów.
no avatar
Matek121o
 
Posty: 10
Reputacja: 0 pkt
Od: 13 paź 2017, o 11:39

Motyw potomny i function.php

przez Matek121o » 5 sty 2018, o 15:43

Chcę edytować plik CSS z głownego motywu który dotyczy zakładki #color schemes w lokalizacji /color-schemes/' są umieszczone css.
Jak zrobic aby były one zastąpione w motywie potomnym?


Próbowałem to zrobic za pomocą functions.php ale mam problem z modyfikacją w motywie potomnym w pliku functions.php
To jest funkcja: (jak sie nie myle odpowiada ona za zaciąganie zew. css, js itd do wordpress)
Kod: Zaznacz cały
function vega_wp_scripts() {
   
    /** CSS **/
   
    #bootstrap, fontawesome, bootstrapsocial
    wp_register_style('bootstrap', get_template_directory_uri() . '/assets/css/bootstrap.min.css' );
    wp_register_style('font-awesome', get_template_directory_uri().'/assets/css/font-awesome.min.css' );
    wp_register_style('bootstrap-social', get_template_directory_uri().'/assets/css/bootstrap-social.css' );
   
    #animate.css
    wp_enqueue_style('animate-css', get_template_directory_uri().'/assets/css/animate.css');
   
    #fonts
    wp_enqueue_style('vega-wp-googlefont1',
    '//fonts.googleapis.com/css?family=Lato:400,400i,700,700i,900,900i&subset=latin-ext');

    #default stylesheet
    $vega_wp_theme = wp_get_theme();
    $deps = array('bootstrap', 'font-awesome', 'bootstrap-social');
    wp_enqueue_style('vega-wp-style', get_stylesheet_uri(), $deps, $vega_wp_theme->get( 'Version' ));
       
    #color scheme
    $vega_wp_color_stylesheet = vega_wp_get_option('vega_wp_color_stylesheet');
    wp_enqueue_style('vega-wp-color', get_template_directory_uri() . '/color-schemes/' . strtolower($vega_wp_color_stylesheet) . '.css', array() );
   
    // Load html5shiv.js
   wp_enqueue_script( 'vega-html5', get_template_directory_uri() . '/assets/js/html5shiv.js', array('vega-wp-style'), '3.7.0' );
   wp_script_add_data( 'vega-html5', 'conditional', 'lt IE 9' );
   
    // Load respond.min.js
   wp_enqueue_script( 'vega-respond', get_template_directory_uri() . '/assets/js/respond.min.js', array('vega-wp-style'), '1.3.0' );
   wp_script_add_data( 'vega-html5', 'conditional', 'lt IE 9' );
   
    /** Javascript **/
   
    #bootstrap
    wp_enqueue_script('bootstrap', get_template_directory_uri().'/assets/js/bootstrap.min.js', array('jquery'), '', true );
    wp_enqueue_script('jquery-smartmenus', get_template_directory_uri() . '/assets/js/jquery.smartmenus.min.js', array('jquery'), '', true );
    wp_enqueue_script('jquery-smartmenus-bootstrap', get_template_directory_uri() . '/assets/js/jquery.smartmenus.bootstrap.min.js', array('jquery'), '', true );
       
    #animation
    $vega_wp_animations = vega_wp_get_option('vega_wp_animations');
    if($vega_wp_animations == 'Y') {
        wp_enqueue_script('wow', get_template_directory_uri() . '/assets/js/wow.min.js', array('jquery'), '', true );
        wp_enqueue_script('vega-wp-themejs-anim', get_template_directory_uri() . '/assets/js/vega-wp-anim.js', array('jquery'), '', true );
    }
   
    #parallax
    wp_enqueue_script('parallax', get_template_directory_uri() . '/assets/js/parallax.min.js', array('jquery'), '', true );
   
    #theme javascript
    $vega_this_theme = wp_get_theme();
    wp_enqueue_script('vega-wp-themejs', get_template_directory_uri() . '/assets/js/vega-wp.js', array('jquery'), $vega_this_theme->get( 'Version' ), true );
   
    #comments
    if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
        wp_enqueue_script( 'comment-reply' );
    }
   
}
add_action( 'wp_enqueue_scripts', 'vega_wp_scripts' );


Dokładnie chodzi o czesc #color scheme chce aby mi zaciągało plik z motywu potomnego.

no avatar
mirokoda
Świeżak
 
Posty: 94
Reputacja: 4 pkt
Od: 15 lis 2017, o 09:13

Re: Motyw potomny i function.php

przez mirokoda » 6 sty 2018, o 16:06

nie dokładnie napisałeś o co Ci chodzi... zapoznaj się z artykułem https://codex.wordpress.org/Child_Themes tam powinieneś znaleźć rozwiązanie swoich problemów.
microkoda. com | kuba mazur

no avatar
Czarli12
 
Posty: 4
Reputacja: 0 pkt
Od: 15 maja 2018, o 16:02

Re: Motyw potomny i function.php

przez Czarli12 » 15 maja 2018, o 16:12

Witam.

Nie będę zakładał nowego wątku, bo temat wydaje się jak najbardziej odpowiedni do mojego pytania.
Chcę zmienić czcionki w motywie potomnym, ale WP ładuje style poprzez plik function.php funkcją get_template_directory(). Jak zrobię sobie plik function.php w motywie potomnym i próbuję załadować style funkcją get_stylesheet_directory() to WP się wywala. Jak mogę rozwiązać taki problem?

Z góry dziękuję za odpowiedź.

no avatar
bercik156
Świeżak
 
Posty: 154
Reputacja: 17 pkt
Od: 2 kwi 2017, o 06:59
Lokalizacja: Wa-Wa

Re: Motyw potomny i function.php

przez bercik156 » 16 maja 2018, o 17:42

get_stylesheet_directory_uri();
Pomogłem? Polub / Podziękuj :) Ciebie to nic nie kosztuje a mi sprawi radość :D

no avatar
Czarli12
 
Posty: 4
Reputacja: 0 pkt
Od: 15 maja 2018, o 16:02

Re: Motyw potomny i function.php

przez Czarli12 » 17 maja 2018, o 12:48

Przepraszam bo nie dopisałem - function.php wywołuje inny plik .php który dopiero wywołuje plik .css, zatem get_stylesheet_directory_uri(); nie może być.

no avatar
bercik156
Świeżak
 
Posty: 154
Reputacja: 17 pkt
Od: 2 kwi 2017, o 06:59
Lokalizacja: Wa-Wa

Re: Motyw potomny i function.php

przez bercik156 » 17 maja 2018, o 15:13

Musisz w motywie potomnym zrobić plik functions.php który odwoluje się do pliku "innego php" w którym to odwołasz się do właściwego pliku z motywu potomnego :) ew. W pliku functions.php nadpisac funkcję z tego innego pliku o ile oczywiscie tam jest to oparte na hakach :)
Pomogłem? Polub / Podziękuj :) Ciebie to nic nie kosztuje a mi sprawi radość :D

no avatar
Czarli12
 
Posty: 4
Reputacja: 0 pkt
Od: 15 maja 2018, o 16:02

Re: Motyw potomny i function.php

przez Czarli12 » 17 maja 2018, o 15:41

Wszystko już zrobiłem, tylko:
- w motywie głównym function.php wywołuje funkcją require_once i get_template_directory() innyplik.php, a ten z kolei wywołuje plik theme.css
- w motywie potomnym function.php wywołuje funkcją require_once i get_stylesheet_directory() innyplik.php (zmodyfikowany) i ten z kolei wywołuje plik theme.css (zmodyfikowany)
Chodzi o to że function.php wywołuje dwa razy (o ile to możliwe przy require_once - raz z motywu potomnego, a drugi raz z motywu głównego) plik o takiej samej z różnych lokalizacji i to powoduje że strona się wywala. Jak to wywołanie wykomentuję sobie w function.php w motywie głównym, to wszystko działa. Problem w tym że jak szablon się zaktualizuje to zacznie prawdopodobnie znowu ładować style z motywu głównego a nie potomnego.

Przy okazji jaka jest kolejność ładowania function.php? Najpierw z motywu potomnego, a później z głównego?

no avatar
bercik156
Świeżak
 
Posty: 154
Reputacja: 17 pkt
Od: 2 kwi 2017, o 06:59
Lokalizacja: Wa-Wa

Re: Motyw potomny i function.php

przez bercik156 » 17 maja 2018, o 15:55

Motyw potomny nadpisuje motyw główny.

Pokaż tutaj te linie o których piszesz tylko najlepiej jakąś większą część kodu pokaż, a nie tylko linijkę :)

Edit:

A w ogóle próbowałeś nadpisać style css po prostu?

Powinno działać coś takiego, że przykładowo w motywie masz pliki css w includes/css i tam masz np. plik fonts.css i ten plik kopiujesz z rodzica do potomka i edytujesz go jak chcesz i wtedy on sie ładuje zamiast z rodzica to z potomka :p
Pomogłem? Polub / Podziękuj :) Ciebie to nic nie kosztuje a mi sprawi radość :D

no avatar
Czarli12
 
Posty: 4
Reputacja: 0 pkt
Od: 15 maja 2018, o 16:02

Re: Motyw potomny i function.php

przez Czarli12 » 17 maja 2018, o 16:08

Z tym nadpisywaniem to function.php jest wyjątkiem... i się nie nadpisuje.

Fragment function.php
Kod: Zaznacz cały
/**
 * Include files
 */

//   Theme Functions
require_once ( get_template_directory() .'/framework/theme_functions.php' );
 
//   Theme style, jQuery
require_once ( get_template_directory() .'/framework/css-js.php' );


zamieniłem na

Kod: Zaznacz cały
//   Theme style, jQuery
require_once ( get_stylesheet_directory() .'/framework/css-js.php' );


a plik css-js.php
Kod: Zaznacz cały
#Frontend
if (!function_exists('cstheme_css_js_register')) {
    function cstheme_css_js_register()
    {

        #CSS
        wp_enqueue_style('cs_bootstrap', get_template_directory_uri() . '/css/bootstrap.min.css');
      wp_enqueue_style('cs_fontawesome', get_template_directory_uri() . '/css/font-awesome.min.css');
      wp_enqueue_style('cs_fluidbox', get_template_directory_uri() . '/css/fluidbox.css');
      wp_enqueue_style('cs_owlcarousel', get_template_directory_uri() . '/css/owl.carousel.css');
      wp_enqueue_style('cs_theme', get_template_directory_uri() . '/css/theme-style.css');
      if (cstheme_woo_enabled()) {
         wp_enqueue_style('cs_woo', get_template_directory_uri() . '/css/woo.css');
      }
      wp_enqueue_style('cs_responsive', get_template_directory_uri() . '/css/responsive.css');
      wp_enqueue_style('cs_default', get_stylesheet_uri());

        #JS
      wp_enqueue_script("jquery");
      wp_enqueue_script('cs_bootstrap_js', get_template_directory_uri() . '/js/bootstrap.min.js', 'jquery', '', true);
      wp_enqueue_script('cs_magnific_popup_js', get_template_directory_uri() . '/js/jquery.magnific-popup.min.js', 'jquery', '', true);
      wp_enqueue_script('cs_fluidbox_js', get_template_directory_uri() . '/js/jquery.fluidbox.min.js', 'jquery', '', true);
      wp_enqueue_script('cs_jscrollpane_js', get_template_directory_uri() . '/js/jquery.jscrollpane.min.js', 'jquery', '', true);
      if ( cstheme_option('function_fixed_sidebar_enable') != 0) {
         wp_enqueue_script('cstheme_sticky-sidebar_js', get_template_directory_uri() . '/js/theia-sticky-sidebar.min.js', array(), false, true);
      }
      if (cstheme_woo_enabled()) {
         wp_enqueue_script('cs_woo_js', get_template_directory_uri() . '/js/woo.js', 'jquery', '', true);
      }
      wp_enqueue_script('cs_cstheme_js', get_template_directory_uri() . '/js/cstheme-script.js', 'jquery', '', true);
      
      if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
         wp_enqueue_script( 'comment-reply' );
      }
      
      // Google Fonts
      $protocol = is_ssl() ? 'https' : 'http';
      global $cs_simplefonts;
      $cs_googlefonts = array(
         cstheme_option('global_text_font', 'face'),
         cstheme_option('heading_font'),
      );
      $googlefont = '';
      foreach ($cs_googlefonts as $font) {
         if (!in_array($font, $cs_simplefonts)) {
            $googlefont = str_replace(' ', '+', $font) . ':' . cstheme_option('google_font_weight') . '|' . $googlefont;
         }
      }
      if ($googlefont != '') {
         wp_enqueue_style('google-font', "$protocol://fonts.googleapis.com/css?family=" . substr_replace($googlefont, "", -1) . "&subset=" . cstheme_option('google_font_subset'));
      }
      
      wp_enqueue_style('google-font-custom', 'https://fonts.googleapis.com/css?family=Pacifico');
      
    }
}
add_action('wp_enqueue_scripts', 'cstheme_css_js_register');


zmieniona linijka
Kod: Zaznacz cały
        #CSS
      wp_enqueue_style('cs_theme', get_template_directory_uri() . '/css/theme-style.css');

no avatar
bercik156
Świeżak
 
Posty: 154
Reputacja: 17 pkt
Od: 2 kwi 2017, o 06:59
Lokalizacja: Wa-Wa

Re: Motyw potomny i function.php

przez bercik156 » 17 maja 2018, o 19:46

No okk a jak robisz tak, że w motywie potomnym tylko i wyłącznie dodasz plik zmodyfikowany do childa tzn. theme-style.css? Bo jak rozumiem ten plik to nie jest customowy nowy plik tylko edytowany?

Czemu nie dodasz tego nowego stylu do style.css?

functions.php sie nie nadpisuje ale za to sie edytuje i mozna usuwac i dodawac akcje a co z tym idzie je edytowac :)

Wracajac do tematu remove_actions/wp_deregister_style itd musisz sie pozbyc czegos aby zaladowac cos innego. Twoj motyw widac prymitywnie napisany skoro nie stosuje sie do symentyki wordpress bo to wszystko powinno byc automatycznie nawet przy require_once ladowane z potomka. Najlatwiejsza opcja jak dla mnie to by bylo zrezygnowac z childa zmienic nazwe motywu glownego i bawic sie na motywie glownym ktory Ci sie juz nie bedzie aktualizowac :)
Pomogłem? Polub / Podziękuj :) Ciebie to nic nie kosztuje a mi sprawi radość :D




  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Modyfikacja motywów Wordpress

Kto przegląda forum Wordpress

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 gości