$30 off During Our Annual Pro Sale. View Details »

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

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

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

More Decks by WordPress Greek Community

Other Decks in Technology

Transcript

  1. Βασικές Αρχές Σχεδίασης ενός
    Theme
    Η χρήση του Template Hierarchy και άλλων τεχνικών στη σχεδίαση ενός
    θέματος
    Βασίλης Φατούρος

    View Slide

  2. Wordpress Theme
    Είδη Projects
    Theme για γενική χρήση.
    Δεν ξέρουμε που θα το χρησιμοποιήσει αυτός που θα το
    πάρει, ούτε ποιές είναι οι απαιτήσεις του, επομένως θα πρέπει
    να μαντέψουμε τις πιθανές χρήσεις του.
    Theme για ένα συγκεκριμμένο πελάτη.
    Έχουμε συζητήσει με τον ενδιαφερόμενο και ξέρουμε τις
    απαιτήσεις του, επομένως θα του παραδόσουμε κάτι κομμένο
    και ραμμένο σε αυτά που ζητάει.

    View Slide

  3. Πλευρές Ανάπτυξης ενός Theme
    1. Template Hierarchy
    2. Αρχιτεκτονική Σελίδων
    3. Βασικές Δυνατότητες
    4. Ευκολία Αλλαγής Εμφάνισης
    5. Τροποποίηση Διαχειριστικού

    View Slide

  4. Template Hierarchy

    View Slide

  5. Template Hierarchy
    http://localhost/category/greek-food/
    1.category-greek-food.php
    2. category-10.php
    3. category.php
    4. archive.php
    5. index.php

    View Slide

  6. Template Hierarchy
    add_action('wp_head', 'show_template');
    function show_template(){
    global $template;
    print_r($template);
    }

    View Slide

  7. Template Hierarchy

    View Slide

  8. Αρχιτεκτονική Σελίδων
    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).

    View Slide

  9. Βασικές Δυνατότητες
    1. Χρήση fancybox effects
    2. Χρήση περισσότερων από δύο διαφορετικών
    διαστάσεων μιας εικόνας, {add_image_size}.
    3. Σύνδεση κατηγοριών με αντικείμενα.
    4. Χρήση ειδικών σελίδων {Template Name:
    xxxxxxxxxx} όπως contact form και login form,
    ακόμη και εγγραφής χρηστών από το site.

    View Slide

  10. Ευκολία Αλλαγής Εμφάνισης

    View Slide

  11. Ευκολία Αλλαγής Εμφάνισης

    View Slide

  12. Τροποποίηση Διαχειριστικού

    View Slide

  13. Τροποποίηση Διαχειριστικού

    View Slide

  14. Τροποποίηση Διαχειριστικού

    View Slide

  15. Τροποποίηση Διαχειριστικού

    View Slide

  16. Τροποποίηση Διαχειριστικού
    add_filter("manage_edit-movie_columns", "movie_edit_columns");
    function movie_edit_columns( $columns ) {
    $columns = array(
    "cb" => "",
    "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; ..... } }

    View Slide

  17. Τροποποίηση Διαχειριστικού

    View Slide

  18. Τροποποίηση Διαχειριστικού
    // 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; ?>

    Published to


    'Coming Soon', '2' => 'Opening This Week',
    '3' => 'Now Showing', '4' => 'Closed');
    foreach ($selections as $key => $value):?>


    View Slide

  19. Τροποίηση Διαχειριστικού
    // 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; }

    View Slide

  20. Τροποίηση Διαχειριστικού
    // 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; ?>
    <!--<br/>function set_inline_status_set(moviesstatusSet, nonce, moviesstatusSet1, nonce1, moviesstatusSet2, nonce2, moviesstatusSet3,<br/>nonce3, moviesstatusSet4, nonce4) {<br/>// revert Quick Edit menu so that it refreshes properly<br/>inlineEditPost.revert();<br/>var moviesstatusInput = document.getElementById('status_set');<br/>var nonceInput = document.getElementById('movies_status_noncename');<br/>nonceInput.value = nonce;<br/>// check option manually<br/>for (i = 0; i < moviesstatusInput.options.length; i++) {<br/>if (moviesstatusInput.options[i].value == moviesstatusSet) { moviesstatusInput.options[i].setAttribute("selected", "selected"); } else {<br/>moviesstatusInput.options[i].removeAttribute("selected"); } } }//--><br/>

    View Slide

  21. Τροποίηση Διαχειριστικού
    // 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'] = '$actions['inline hide-if-no-js'] .= " onclick=\"set_inline_status_set('{$status_id}')\">";
    $actions['inline hide-if-no-js'] .= __( 'Quick Edit' ); $actions['inline hide-if-no-js'] .= ''; return $actions;}

    View Slide

  22. Τροποποίηση Διαχειριστικού

    View Slide

  23. Χρήσιμα Plugins
    Dashboard Commander MetaBox
    Taxonomy Images Meta Taxonomy
    White Label CMS Theme Options

    View Slide

  24. Q&A

    View Slide