Support » Code oplossingen gezocht » De juiste manier om function.php te coderen

  • Opgelost luna1970

    (@luna1970)


    Ik wil graag Google analytics via het child theme gebruiken, daarvoor heb ik

    <?php
    add_action('wp_head', 'wpb_add_googleanalytics');
    function wpb_add_googleanalytics() { ?>
     
    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-197023322-1"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
    
      gtag('config', 'UA-197023322-1');
    </script>
     
    <?php } ?>
    
    

    geplakt in functions.php. Alleen ging ik er altijd van uit dat bij php script men altijd moet beginnen met <?php en eindigt met ? en dat daar tussen allerlei verschillende scripts voor verschillende doeleinden kunnen worden geplaatst. Alleen als ik dat doe krijg ik een error, maar plaats ik het als vorlgt:

    <?php
    add_action( 'wp_enqueue_scripts', 'luna_aangenaam_enqueue_styles' );
    	 function luna_aangenaam_enqueue_styles() {
     		  wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' ); 
     		  }
    	add_filter( 'generate_copyright','tu_custom_copyright' );
    	function tu_custom_copyright() {
        	?>
       		Copyright © 2021 Luna Steintjes
        	<?php
    	}
    	add_action( 'after_setup_theme','tu_remove_header' );
    		function tu_remove_header() {
        		remove_action( 'generate_header','generate_construct_header' );
    	}
    ?>
    <?php
    add_action('wp_head', 'wpb_add_googleanalytics');
    function wpb_add_googleanalytics() { ?>
     
    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-........-."></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
    
      gtag('config', 'UA-..........-.');
    </script>
     
    <?php } ?>
    

    werkt het wel, dus in het script 2 keer beginnen met <?php en eindigen met ?>. Wat doe ik hier fout, of hoe moet ik het anders doen om het te laten werken, maar ook de code te laten kloppen.

    Dank voor de moeite

    • Dit onderwerp is gewijzigd 1 maand geleden door Jeroen Rotty. Reden: verwijdering URL
15 reacties aan het bekijken - 1 tot 15 (van in totaal 16)
  • Moderator Jeroen Rotty

    (@jeroenrotty)

    Support Moderator

    Er mag in functions.php geen eind PHP tag ?> op het einde staan. Zie stackoverflow uitleg en link naar een _s functions.php voorbeeld.

    Dus gewoon bovenaan 1-malig <?php en je enqueue van je scripts en daar direct onder je toevoeging van wpbeginner.

    Thread starter luna1970

    (@luna1970)

    Jeroen, ik dank je voor je reactie. Als ik het goed begrijp zou het er dus als volgt uit moeten zien:

    <?php
    add_action( 'wp_enqueue_scripts', 'luna_aangenaam_enqueue_styles' );
    	 function luna_aangenaam_enqueue_styles() {
     		  wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' ); 
     		  }
    	add_filter( 'generate_copyright','tu_custom_copyright' );
    	function tu_custom_copyright() {
        	?>
       		Copyright © 2021 Luna Steintjes
        	<?php
    	}
    	add_action( 'after_setup_theme','tu_remove_header' );
    		function tu_remove_header() {
        		remove_action( 'generate_header','generate_construct_header' );
    	}
    
    add_action('wp_head', 'wpb_add_googleanalytics');
    function wpb_add_googleanalytics() { ?>
     
    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-197023322-1"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
    
      gtag('config', 'UA-197023322-1');
    </script>
    

    Maar als ik het zo doe krijg ik een melding dat er een PHP fout inzit en dat daarom de wijzigingen worden teruggedraaid. Zo staat het namelijk ook php.net omschreven:

    <?php
    echo "Hello world";
    
    // ... more code
    
    echo "Last statement";
    
    // the script ends here with no PHP closing tag

    Maar toch doe ik iets niet goed. Waar ga ik nu fout?

    Dank en groet

    Thread starter luna1970

    (@luna1970)

    Ben een tijd je aan het knoeien geweest en heb denk ik nu e.e.a. op de juiste manier staan.

    <?php
    add_action( 'wp_enqueue_scripts', ‘child_theme_enqueue_styles' );
    	 child_theme_aangenaam_enqueue_styles() {
     		  wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' ); 
     		  }
    
    	add_filter( 'generate_copyright','tu_custom_copyright' );
    	function tu_custom_copyright() {
        	?>
       		Copyright © 2021 what’s in a name
        	<?php
    	}
    	add_action( 'after_setup_theme','tu_remove_header' );
    		function tu_remove_header() {
        		remove_action( 'generate_header','generate_construct_header' );
    	}
    	
    add_action('wp_head', 'wpb_add_googleanalytics');
    function wpb_add_googleanalytics() { ?>
    
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-……………..”></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
    
      gtag('config', 'UA-................…’);
    </script>
    
    <?php } ?>

    Ik krijg nu geen errors meer en ook kunnen we zien of er gekeken wordt. Kan iemand mij zeggen of mijn redenatie klopt.

    Dank

    Guido

    (@guido07111975)

    Hoi,

    Onderstaande zou moeten werken, je moet ook het stylesheet van het hoofdthema aanroepen in bestand functions van je child thema:

    // voorbeeld verwijderd: geen meerwaarde (zie mijn volgende reactie)

    Zo doe ik het zelf in mijn child thema’s.

    Guido

    • Deze reactie is gewijzigd 4 weken, 1 dag geleden door Guido. Reden: Heb mijn reactie gewijzigd
    Guido

    (@guido07111975)

    Kan iemand mij zeggen of mijn redenatie klopt.

    Nee:
    1) Je sluit de PHP aan het einde met ?> maar dat “hoort” dus niet zo.
    2) Functie child_theme_aangenaam_enqueue_styles wordt niet aan de action erboven toegevoegd (daar staat child_theme_enqueue_styles).

    Zo zal het goed moeten zijn:

    
    <?php
    
    add_action( 'wp_enqueue_scripts', 'child_theme_aangenaam_enqueue_styles' );
    function child_theme_aangenaam_enqueue_styles() {
    	wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
    }
    
    add_filter( 'generate_copyright','tu_custom_copyright' );
    function tu_custom_copyright() {
    	echo 'Copyright © 2021 what’s in a name';
    }
    
    add_action( 'after_setup_theme','tu_remove_header' );
    function tu_remove_header() {
    	remove_action( 'generate_header','generate_construct_header' );
    }
    	
    
    add_action('wp_head', 'wpb_add_googleanalytics');
    function wpb_add_googleanalytics() { ?>
    	<script async src="https://www.googletagmanager.com/gtag/js?id=UA-12345></script>
    	<script>
      		window.dataLayer = window.dataLayer || [];
      		function gtag(){dataLayer.push(arguments);}
      		gtag('js', new Date());
    		gtag('config', 'UA-12345');
    	</script>
    <?php }
    
    Thread starter luna1970

    (@luna1970)

    Guido ik dank je voor je reactie. Excuses voor mijn late reactie, maar ben er een hele tijd mee aan het knoeien geweest. Ook op deze manier werkt het helaas niet. Het is net of het Child theme niet goed geladen wordt omdat alles uit zijn verband getrokken wordt, ik kan alleen de vinger nog niet op de zere plek leggen.

    Ik zie alleen dat als ik <?php verwijder onder

    add_filter( ‘generate_copyright’,’tu_custom_copyright’ );
    function tu_custom_copyright() {
    echo ‘Copyright © 2021 what’s in a name’;
    }`

    De website uit elkaar getrokken wordt, het is dan net of het Child theme of theme dan niet meer goed opgeroepen wordt. De kleuren er onder verdwijnen ook uit het script het script wordt namelijk zwart

    Dank en Groet

    • Deze reactie is gewijzigd 3 weken, 6 dagen geleden door luna1970.
    Guido

    (@guido07111975)

    Hoi,

    Dit deel heb ik niet nagekeken omdat dit van je eigen thema is.. blijkbaar wil je iets doen met je copyright?

    
    add_filter( 'generate_copyright','tu_custom_copyright' );
    function tu_custom_copyright() {
    	echo 'Copyright © 2021 what’s in a name';
    }
    
    add_action( 'after_setup_theme','tu_remove_header' );
    function tu_remove_header() {
    	remove_action( 'generate_header','generate_construct_header' );
    }
    

    De onderste functie (tu_remove_header) lijkt de header te verwijderen, dus ik vraag me af of dat de bedoeling is?

    Guido

    Thread starter luna1970

    (@luna1970)

    Hoi, dank voor je reactie. Ik wil inderdaad graag copyright text aanpassen, de titel zoals die standaard boven aan een pagina wordt geplaatst verwijderen en Google analytics toevoegen, maar ik krijg dit dus niet kloppend, PHP is en blijft abracadabra voor mij.

    Dank en groet

    • Deze reactie is gewijzigd 3 weken, 6 dagen geleden door luna1970.
    Guido

    (@guido07111975)

    Welk thema gebruik je en hoe kom je aan die code die ik in mijn vorige reactie noemde?

    Guido

    Thread starter luna1970

    (@luna1970)

    Het thema is GeneratePress i.c.m. Elementor (pro), de codes heb ik door Google gevonden. Html en CSS lukt nog wel, maar PHP is het niet voor mij.

    Dank en groet

    Guido

    (@guido07111975)

    Komt goed uit, want dat thema gebruik ik ook veel.

    Dit zal moeten werken, heb alles in 1 blok code gezet, meer heb je niet nodig in bestand functions:

    
    // Get stylesheet from parent theme
    function generatepress_extra_styles() {
    	wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
    }
    add_action( 'wp_enqueue_scripts', 'generatepress_extra_styles' );
    
    // Remove default copyright
    function remove_credits() {
    	remove_action( 'generate_credits', 'generate_add_footer_info' );
    }
    add_action( 'wp_head', 'remove_credits', 11 );
    
    // Add new copyright instead
    function add_copyright() {
    	$copyright = sprintf( '<span class="copyright">&copy; %1$s %2$s</span>', date( 'Y' ), get_bloginfo( 'name' ) );
    	echo $copyright;
    }
    add_action( 'generate_credits', 'add_copyright', 12 );
    
    // Add Google Analytics
    function add_googleanalytics() { ?>
    	<script async src="https://www.googletagmanager.com/gtag/js?id=UA-197023322-1"></script>
    	<script>
      		window.dataLayer = window.dataLayer || [];
      		function gtag(){dataLayer.push(arguments);}
      		gtag('js', new Date());
    		gtag('config', 'UA-197023322-1');
    	</script>
    <?php }
    add_action('wp_head', 'add_googleanalytics');
    

    Begin bovenaan bestand functions met <?php.
    Onderaan in de footer van je site komt copyright teken + jaartal + naam vd site.

    Guido

    Thread starter luna1970

    (@luna1970)

    Dankjewel, dit werkt en ziet er meteen een stuk overzichtelijker uit. Ik heb alleen nog dit toegevoegd voor het verwijderen van de kopregel:

    // Remove default header
    add_action( 'after_setup_theme','tu_remove_header' );
    	function tu_remove_header() {
        	remove_action( 'generate_header','generate_construct_header' );
    }

    Het geheel ziet er nu zo uit:

    <?php
    // Get stylesheet from parent theme
    function generatepress_extra_styles() {
    	wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
    }
    add_action( 'wp_enqueue_scripts', 'generatepress_extra_styles' );
    
    // Remove default header
    add_action( 'after_setup_theme','tu_remove_header' );
    	function tu_remove_header() {
        	remove_action( 'generate_header','generate_construct_header' );
    }
    
    // Remove default copyright
    function remove_credits() {
    	remove_action( 'generate_credits', 'generate_add_footer_info' );
    }
    add_action( 'wp_head', 'remove_credits', 11 );
    
    // Add new copyright instead
    function add_copyright() {
    	$copyright = sprintf( '<span class="copyright">&copy; %1$s %2$s</span>', date( 'Y' ), get_bloginfo( 'name' ) );
    	echo $copyright;
    }
    add_action( 'generate_credits', 'add_copyright', 12 );
    
    // Add Google Analytics
    function add_googleanalytics() { ?>
    	<script async src="https://www.googletagmanager.com/gtag/js?id=UA-197023322-1"></script>
    	<script>
      		window.dataLayer = window.dataLayer || [];
      		function gtag(){dataLayer.push(arguments);}
      		gtag('js', new Date());
    		gtag('config', 'UA-197023322-1');
    	</script>
    <?php }
    add_action('wp_head', 'add_googleanalytics');

    Enorm bedankt voor de moeite

    Groet

    • Deze reactie is gewijzigd 3 weken, 6 dagen geleden door luna1970.
    • Deze reactie is gewijzigd 3 weken, 6 dagen geleden door luna1970.
    Guido

    (@guido07111975)

    Mooi zo!
    Ik had ook problemen met de code hier toe te voegen.
    Je moet helemaal bovenaan <?php weghalen, die “breekt” de code.

    // Oh, zie nu dat het jou wel is gelukt.

    In ieder geval, graag gedaan!

    Als je verder geen vragen hebt, wil je dan de status van dit topic op “opgelost” zetten?

    Guido

    • Deze reactie is gewijzigd 3 weken, 6 dagen geleden door Guido. Reden: Heb mijn reactie gewijzigd
    Thread starter luna1970

    (@luna1970)

    Dank weer. als ik <?php weg haal krijg ik de volgende melding:

    Je wijzigingen in de PHP-code zijn teruggedraaid vanwege een fout op regel 36 in het bestand wp-content/themes/luna-aangenaam/functions.php. Los dit op en probeer opnieuw op te slaan.

    syntax error, unexpected ‘}’, expecting end of file

    en je schrijft aan het einde

    Begin bovenaan bestand functions met <?php.
    Onderaan in de footer van je site komt copyright teken + jaartal + naam vd site.

    Guido

    Wat doe ik nu fout

    Groet

    Guido

    (@guido07111975)

    Nee, ik bedoel hier in het forum 😉

    Maar had mijn eerdere reactie inmiddels gewijzigd.

    Guido

15 reacties aan het bekijken - 1 tot 15 (van in totaal 16)