Capitolo 4: function.php

programmare temi wordpress

Ogni tema ha un file function.php che aggiunge delle funzionalità al tema con supporto del motore di wordpress, l’assegnazione degli stili.
ulteriori informazioni https://developer.wordpress.org/themes/basics/theme-functions/

add_action

function nomeProgetto_theme_style() {
      wp_enqueue_script( 'font-css', 'https://fonts.googleapis.com/css?family=Open+Sans|Varela+Round' ); //aggiunge css da una fonte esterna
      wp_enqueue_style( 'main-css', get_stylesheet_uri(), 'fonts-css', get_the_time() ); //aggiunge css da un file interno al tema
//get_the_time() viene usato per non dover svuotare di continuo la cache e va sostituita con la versione
}
add_action( 'wp_enqueue_scripts', 'nomeProgetto_theme_style' );

filter_action

function nomeProgetto_read_more_link( $excerpt ) {

  $extended_excerpt = $excerpt;

  $extended_excerpt .= ' <a class="more-link" href="' . get_permalink() . '">Read more &raquo;</a>';

  return $extended_excerpt;

}
add_filter( 'get_the_excerpt', 'nomeProgetto_read_more_link', 10 );

Aggiungere suporti al tema

// Add Theme Support
add_theme_support( 'title-tag' );
add_theme_support( 'post-thumbnails' );
add_theme_support( 'post_format', ['aside', 'gallery', 'link', 'image', 'quote', 'status', 'video', 'audio', 'chat'] );
add_theme_support( 'html5' );
add_theme_support( 'automatic-feed-links' );
add_theme_support( 'custom-background' );
add_theme_support( 'custom-header' );
add_theme_support( 'custom-logo' );
add_theme_support( 'customize-selective-refresh-widgets' );
add_theme_support( 'starter-content' );





// Setup Widget Areas
function wphierarchy_widgets_init() {
  register_sidebar([
    'name'          => esc_html__( 'Main Sidebar', 'mstc-theme' ),
    'id'            => 'main-sidebar',
    'description'   => esc_html__( 'Add widgets for main sidebar here', 'mstc-theme' ),
    'before_widget' => '<section class="widget">',
    'after_widget'  => '</section>',
    'before_title'  => '<h1 class="widget-title">',
    'after_title'   => '</h1>',
  ]);  
}
add_action( 'widgets_init', 'wphierarchy_widgets_init' );

Registrazione di un menu

La registrazione del menù consente di poterlo modificare nelle impostazioni del tema ( aspetto -> personalizza -> menù ) e scegliere la postizione ‘Main Menu’ o ‘Footer Menu’ (nell’esempio).

// Register Menu Locations
register_nav_menus( [
  'main-menu' => esc_html__( 'Main Menu', 'mstc-theme' ),
  'footer-menu' => esc_html__( 'Footer Menu', 'mstc-theme' ),
]);

ed essere visualizzati in una parte del sito richiamando la funzione wp_nav_menu

$args =[ 'theme_location' => 'main-menu' ];
wp_nav_menu( $args );

Menù personalizzato e poi modificabile

Creare una funzione con i relativi menù

function custom_menu() {
  ?>
  <ul id="menu">
    <li><a href="/">Home</a></li>
    <li><a href="/#">Set primary menu</a></li>
  </ul>
  <?php
}

richiamarla con:

$args = [
     'fallback_cb' => 'custom_menu', 
     'menu' => 'menu', 
     'menu_id' => 'menu', 
     'theme_location'=>'footer-menu' ];
wp_nav_menu( $args );

SCRIVI UN COMMENTO