Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Βασικές Αρχές Σχεδίασης Ενός Theme (Βασίλη...

Βασικές Αρχές Σχεδίασης Ενός Theme (Βασίλης Φατούρος)

Η χρήση του Template Hierarchy και άλλων τεχνικών στη σχεδίαση ενός θέματος

More Decks by WordPress Greek Community

Other Decks in Technology

Transcript

  1. Βασικές Αρχές Σχεδίασης ενός Theme Η χρήση του Template Hierarchy

    και άλλων τεχνικών στη σχεδίαση ενός θέματος Βασίλης Φατούρος
  2. Wordpress Theme Είδη Projects Theme για γενική χρήση. Δεν ξέρουμε

    που θα το χρησιμοποιήσει αυτός που θα το πάρει, ούτε ποιές είναι οι απαιτήσεις του, επομένως θα πρέπει να μαντέψουμε τις πιθανές χρήσεις του. Theme για ένα συγκεκριμμένο πελάτη. Έχουμε συζητήσει με τον ενδιαφερόμενο και ξέρουμε τις απαιτήσεις του, επομένως θα του παραδόσουμε κάτι κομμένο και ραμμένο σε αυτά που ζητάει.
  3. Πλευρές Ανάπτυξης ενός Theme 1. Template Hierarchy 2. Αρχιτεκτονική Σελίδων

    3. Βασικές Δυνατότητες 4. Ευκολία Αλλαγής Εμφάνισης 5. Τροποποίηση Διαχειριστικού
  4. Αρχιτεκτονική Σελίδων 1. Διαφορετικά header, footer ανά γλώσσα ή κατηγορία

    {get_header(), get_footer()}. 2. Διαφορετικά Widget Areas και Menus, {get_sidebar(), wp_nav_menu()}. 3. H χρήση sidebar με άλλες δυνατότητες όπως διαφημίσεις {get_sidebar()}. 4. Χρήση carousel areas. 5. Διαφορετικά είδη δεδομένων (custom post types) και κατηγoριοποιήσεων (custom taxonomy).
  5. Βασικές Δυνατότητες 1. Χρήση fancybox effects 2. Χρήση περισσότερων από

    δύο διαφορετικών διαστάσεων μιας εικόνας, {add_image_size}. 3. Σύνδεση κατηγοριών με αντικείμενα. 4. Χρήση ειδικών σελίδων {Template Name: xxxxxxxxxx} όπως contact form και login form, ακόμη και εγγραφής χρηστών από το site.
  6. Τροποποίηση Διαχειριστικού add_filter("manage_edit-movie_columns", "movie_edit_columns"); function movie_edit_columns( $columns ) { $columns

    = array( "cb" => "<input type=\"checkbox\" />", "title" => "Movie", "thumbnail" => "Thumbnail", ..... ); return $columns; } add_action("manage_posts_custom_column", "prod_custom_columns"); function prod_custom_columns($column){ global $post; switch ($column) { case "thumbnail": echo the_post_thumbnail('small-post-thumbnail'); break; ..... } }
  7. Τροποποίηση Διαχειριστικού // Add field to quick edit add_action('quick_edit_custom_box', 'movies_status_add_quick_edit',

    10, 2); function movies_status_add_quick_edit($column_name, $post_type) { if ($column_name != 'status') return; ?> <fieldset class="inline-edit-col-left"> <div class="inline-edit-col"> <span class="title">Published to</span> <input type="hidden" name="movies_status_noncename" id="movies_status_noncename" value="" /> <select name='status_set' id='status_set'> <?php $selections = array('1' => 'Coming Soon', '2' => 'Opening This Week', '3' => 'Now Showing', '4' => 'Closed'); foreach ($selections as $key => $value):?> <option class='status-option' value='<?php echo $key; ?>'><?php echo $value; ?></option> <?php endforeach; ?> </select></div> </fieldset> <?php }
  8. Τροποίηση Διαχειριστικού // Add to our admin_init function add_action('save_post', 'movies_status_save_quick_edit_data');

    function movies_status_save_quick_edit_data($post_id) { // verify if this is an auto save routine. If it is our form has not been submitted, so we dont wanτ to do anything if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return $post_id; // Check permissions if ( 'page' == $_POST['post_type'] ) { if ( !current_user_can( 'edit_page', $post_id ) ) return $post_id; } else { if ( !current_user_can( 'edit_post', $post_id ) ) return $post_id; } // OK, we're authenticated: we need to find and save the data $post = get_post($post_id); if (isset($_POST['status_set']) && ($post->post_type != 'revision')) { $status_set_id = esc_attr($_POST['status_set']); if ($status_set_id) update_post_meta( $post_id, '_moviecentral_status', $status_set_id); } return $status_set_id; }
  9. Τροποίηση Διαχειριστικού // Add to our admin_init function add_action('admin_footer', 'movies_status_quick_edit_javascript');

    function movies_status_quick_edit_javascript() { global $current_screen; if (($current_screen->id != 'edit-movies') || ($current_screen->post_type != 'movies')) return; ?> <script type="text/javascript"> <!-- function set_inline_status_set(moviesstatusSet, nonce, moviesstatusSet1, nonce1, moviesstatusSet2, nonce2, moviesstatusSet3, nonce3, moviesstatusSet4, nonce4) { // revert Quick Edit menu so that it refreshes properly inlineEditPost.revert(); var moviesstatusInput = document.getElementById('status_set'); var nonceInput = document.getElementById('movies_status_noncename'); nonceInput.value = nonce; // check option manually for (i = 0; i < moviesstatusInput.options.length; i++) { if (moviesstatusInput.options[i].value == moviesstatusSet) { moviesstatusInput.options[i].setAttribute("selected", "selected"); } else { moviesstatusInput.options[i].removeAttribute("selected"); } } }//--> </script><?php }
  10. Τροποίηση Διαχειριστικού // Add to our admin_init function add_filter('post_row_actions', 'movies_status_expand_quick_edit_link',

    10, 2); function movies_status_expand_quick_edit_link($actions, $post) { global $current_screen; if (($current_screen->id != 'edit-movies') || ($current_screen->post_type != 'movies')) return $actions; $nonce = wp_create_nonce( 'movies_status'.$post->ID); $status_id = get_post_meta($post->ID, '_moviecentral_status', true); $actions['inline hide-if-no-js'] = '<a href="#" class="editinline" title="'; $actions['inline hide-if-no-js'] .= esc_attr( __( 'Edit this item inline' ) ) . '" '; $actions['inline hide-if-no-js'] .= " onclick=\"set_inline_status_set('{$status_id}')\">"; $actions['inline hide-if-no-js'] .= __( 'Quick&nbsp;Edit' ); $actions['inline hide-if-no-js'] .= '</a>'; return $actions;}
  11. Q&A