Thông báo

QUAN TRỌNG

Tuyên bố từ chối trách nhiệm !!!
Chúng tôi không chịu trách nhiệm về bài đăng của các thành viên, nếu bạn có vấn đề gì vui lòng liên hệ với các quan chức địa phương nơi bạn ở, chúng tôi sẽ không giải quyết bất cứ vấn đề gì khi bạn sử dụng forum.

Vì một cộng đồng Forumvi phát triển !
August 2018
MonTueWedThuFriSatSun
  12345
6789101112
13141516171819
20212223242526
2728293031  

Calendar Calendar

Poll
Ads

    No ads available.


    Hướng dẫn: tuyển dụng lập trình viên WordPress

    Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

    avatar
    DenDenMuShi
    Thành viên mới
    Thành viên mới
    Tổng số bài gửi : 10
    Điểm : 30
    Danh vọng : 0
    Ngày tham gia : 10/03/2018
    Xem lý lịch thành viên

    Bài gửiDenDenMuShi on Sun Mar 11, 2018 12:08 am


    Hiện nay, WordPress là một trong những hệ thống quản lý nội dung nổi tiếng nhất. Khách hàng ưa thích WordPress vì dễ set up, nhiều plugin, và giao diện thân thiện. Lập trình viên thích WordPress vì chức năng dễ hiểu, dễ set up, vừa có chất lượng chấp nhận được. Kết quả là, số lượng trang web theo dùng WordPress ngày càng tăng cao, và việc xác định lập trình viên WordPress giỏi đang ngày càng trở nên quan trọng trong mắt nhà tuyển dụng. Trong bài viết ngày hôm nay, chúng tôi sẽ điểm qua những câu hỏi và câu trả lời giúp các bạn xác định ứng cử viên phù hợp nhất.

    Thách thức

    Hiện nay, WordPress là một trong những hệ thống quản lý nội dung nổi tiếng nhất. Ta có thể dùng nó cho blog cá nhân, cửa hàng trực tuyến, landing page, corporate website,… Khách hàng ưa thích WordPress vì dễ set up, nhiều plugin, và giao diện thân thiện. Lập trình viên thích WordPress vì chức năng dễ hiểu, dễ set up, vừa có chất lượng chấp nhận được.
    Số trang web sử dụng WordPress đang gia tăng, từ đó nhu cầu lập trình viên WordPress cũng tăng theo. Vậy thì, xác định lập trình viên WordPress giỏi như thế nào? Trong bài viết này, chúng tôi sẽ điểm qua những câu hỏi và câu trả lời giúp các bạn xác định trình độ của ứng cử viên.


    Tại sao lại phí tiền xây dựng một website mới cóng, trong khi ta chỉ việc thuê một lập trình viên WordPress và tiếp kiệm biết bao nhiêu tiền?

    Câu hỏi và trả lời

    Q: Thảo luận cách setup custom thêm, kể tên file bắt buộc tối thiểu, và giải thích cách thức WordPress nhận dạng theme mới.
    Mỗi trang WordPress đều yêu cầu theme, và theme này cấu trúc nên trang và là phần không thể thiếu của trang web.
    Một theme mới được tạo lập như sau: trong thư mục 
    Code:
    wp-content/themes/
    [size]
    , tạo và đặt tên forlder mới. Theo quy chuẩn thì nên dùng tên của công ty tạo website. Dùng ký tự lowercase (viết thường) không khoảng cách. Chú ý, trong theme folder phải có đủ 5 file sau: 
    [/size]
    Code:
    style.css
    [size]

    [/size]
    Code:
    functions.php
    [size]

    [/size]
    Code:
    index.php
    [size]

    [/size]
    Code:
    header.php
    [size]
     và 
    [/size]
    Code:
    footer.php
    [size]
    . Sau đó, bạn có thể mở rộng theme với nhiều custom file khác.[/size]
    Việc tạo 
    Code:
    style.css
    [size]
     file header là bước cơ bản trong theme setting. Với 
    [/size]
    Code:
    style.css
    [size]
     và header, lõi WordPress sẽ nhận dạng folder làm theme mới.[/size]
    Phần đầu của file 
    Code:
    style.css
    [size]
    :[/size]

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11
     
    /*
    Theme Name: [theme name]
    Author: [author name]
    Author URI: [author URL]
    Version: [theme version]
    Description: [theme description]
    License: GNU General Public License v2 or later
    License URI: http://www.gnu.org/licenses/gpl-2.0.html
    */
     

    Nếu muốn tạo theme con, bạn phải thêm một line vào chỗ chỉ thị theme chính

    1

    2

    3
     
    Template: twentyfifteen
     

    Trong đó 
    Code:
    twentyfifteen
    [size]
     là tên folder theme gốc.[/size]
    Q: Giải thích quy chế tạo page của WordPress.
    WordPress nhận diện và phân tích yêu cầu được nhập vào thanh URL, chọn file PHP tốt nhất, và khởi tạo webpage. WordPress sẽ tạo một global object 
    Code:
    $wp_query
    [size]
     dựa theo yêu cầu trong URL. Sau đó, với sự trợ giúp của functions, WordPress sẽ load những file khác, như 
    [/size]
    Code:
    header.php
    [size]

    [/size]
    Code:
    footer.php
    [size]
    , và 
    [/size]
    Code:
    sidebar.php
    [size]
    .[/size]
    Kiểm tra sơ đồ phân cấp template, sơ đồ làm rõ quy trình và chỉ ra file sẽ xuất nội dung của truy vấn lúc đó.
    Ví dụ như, nếu địa chỉ là 
    Code:
    /? Cat = 1
    [size]
    . WordPress đầu tiên sẽ kiểm tra file 
    [/size]
    Code:
    category-slug.php
    [size]
    . Nếu không tìm được file, sẽ tìm đến file 
    [/size]
    Code:
    category-id.php
    [size]
    , và tiếp tục như vậy, cho đến khi tìm được file phù hợp. Nếu không tìm được file nào phù hợp, WordPress sẽ lựa chọn file 
    [/size]
    Code:
    index.php
    [size]
    .[/size]
    Q: giải thích ý nghĩa của việc lập trình theme và nguyên tắc cơ bản cần có ở một theme tốt. Theme file nên có những gì?
    Sau đây là một số chuẩn và nguyên tắc đề nghị khi tạo theme mới:

    • Hàm 
      Code:
      wp_head()
      [size]
       phải có trong file 
      [/size]
      Code:
      header.php
      [size]
      .[/size]

    • Hàm vận hành class, phải có trong file 
      Code:
      header.php
      [size]
      , trong body tag: 
      [/size]
      Code:
      <body <php body_class ();? ? >>


    • Hàm 
      Code:
      wp_footer()
      [size]
       phải có trong file 
      [/size]
      Code:
      footer.php
      [size]
      .[/size]

    • Nếu bạn có functionality lặp, code này phải được đặt trong hàm riêng, và đưa hàm vào file 
      Code:
      functions.php
      [size]
      .[/size]

    • Trong tất cả các file, ngoại trừ 
      Code:
      header.php
      [size]
       và 
      [/size]
      Code:
      footer.php
      [size]
      , số tag HTML mở phải bằng với số tag đóng.[/size]

    • Nếu file có chứa phần giống với HTML code, thống nhất thành một file vẫn tốt hơn, đặt file này vào folder con trong folder theme của bạn, bạn có thể đặt tên folder là
      Code:
       blocks
      [size]
       hoặc tên gì cũng được, kết nối phần code này, và gọi hàm 
      [/size]
      Code:
      get_template_part( 'blocks/[name-of-the-file.php]' );
      [size]
      .[/size]

    • File 
      Code:
      index.php
      [size]
       là file cuối cùng tham gia vào xử lý yêu cầu, nên phải trừ vòng lặp chính với bất cứ truy vấn nào. Đồng nghĩa với việc ta không cách nào thay đổi vòng lặp trong 
      [/size]
      Code:
      index.php
      [size]
      .[/size]

    • Tất cả theme setting phải được đặt trong file 
      Code:
      functions.php
      [size]
      : action, filter, custom function, và custom class. Dù vậy, ta vẫn có thể đặt class và function ở file khác, và có thể kết nối đến 
      [/size]
      Code:
      functions.php
      [size]
       chính, hoặc đặt ở một plugin riêng biệt.[/size]

    • Code không nên chứa code có comment. Comment dưới dạng description vẫn được cho phép, nhưng những đoạn code đã được dùng trong design phải bị loại bỏ.

    • Code trong file nên có kèm với indent (thụt lùi).

    • Theme phải đạt chuẩn w3c.

    • Theme phải có khả năng làm việc độc lập với plug-in bên ngoài. Ví dụ như, nếu ta dùng plugin 
      Code:
      WP-PageNavi
      [size]
      , bạn phải viết:[/size]



    1

    2

    3

    4

    5

    6

    7
     
    if (function_exists ( 'wp_pagenavi')):
        wp_pagenavi ();
    else:
        get_template_part ( 'blocks / pager');
    endif;
     


    • Nếu code dùng hàm hoặc plugin class, hãy đảm bảo hàm hoặc class này có tồn tại:



    1

    2

    3
     
    if (function_exists ('name_of_the_function'))
     


    • Với yêu cầu trực tiếp đến database, bạn phải dùng class 
      Code:
      $wpdb
      [size]
       và method của nó.[/size]

    • Nếu bạn sử dụng form và cần tạo options page admin panel, bạn phải dùng
      Code:
      wp_nonce_field()
      [size]
      , và check field và action bên phía server:[/size]



    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20
     

     
    if ( ! isset( $_POST['name_of_nonce_field'] ) || ! wp_verify_nonce( $_POST['name_of_nonce_field'], 'name_of_my_action' )
    ) {
       print 'Sorry, your nonce did not verify.';
       exit;
    } else {
     
       // process form data
    }
    ?>
     
    /* some code is here*/
     

      
      

     


    • Nếu có file không được sử dụng, xóa chúng khỏi theme folder. Nếu client không sử dụng “search” trên trang, xóa 
      Code:
      searchform.php
      [size]
       khỏi theme folder.[/size]

    • Hàm bắt đầu với 
      Code:
      _
      [size]
       chỉ được viết trong vòng lặp. Và trong vòng lặp, nếu có thể, sử dụng hàm bắt đầu với 
      [/size]
      Code:
      _
      [size]
       để thể hiện vùng hiển thị.[/size]


    Q: giải thích cách tạo custom page template.
    Với custom page templates, tạo folder riêng vẫn tốt hơn; và không được xáo trộn custom template với WordPress template đã có. Đặt file custom template vào folder này. Bạn phải thêm đoạn code sau vào đầu file:

    1

    2

    3

    4

    5

    6

    7
     

    / *
    Template Name: [Template_Name]
    * /
    get_header (); ?>
     

    Q: Giải thích cách thêm file CSS và JavaScript vào theme hoặc plugin.
    Bạn có thể dùng 
    Code:
    <link>
    [size]
     hoặc 
    [/size]
    Code:
    <script>
    [size]
    , nhưng cách chính xác nhất vẫn là kết nối chúng trong file 
    [/size]
    Code:
    functions.php
    [size]
    . Bạn cần thêm action vào 
    [/size]
    Code:
    wp_enqueue_scripts
    [size]
    , và action này là kết nối giữa các file JavaScript và các file CSS:[/size]

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13
     
    function theme_scripts_styles () {
        // Connection of a custom JS file after jquery library that will be  connected independently by WordPress
        wp_enqueue_script ( 'theme-script', get_template_directory_uri () '/js/jquery.main.js', array ( 'jquery').);

        // Loads default theme style.css.
        wp_enqueue_style ( 'theme-style', get_stylesheet_uri (), array ());
        
        // Connection of a custom css file
        wp_enqueue_style (. 'theme-theme', get_template_directory_uri () '/theme.css', array ());
    }
    add_action( 'wp_enqueue_scripts', 'theme_scripts_styles' );
     

    Q: Trình bày cách thức tạo custom menu và hiển thị menu lên trang web như thế nào.
    Để hiển thị menu, bạn phải:

    • Lựa chọn vị trí của menu trong 
      Code:
      functions.php
      [size]
      :[/size]



    1

    2

    3

    4

    5
     
    register_nav_menus (array (
    'Primary' => __ ( 'Primary Navigation'),
    ));
     


    • Sử dụng vị trí này để hiển thị menu:



    1

    2

    3

    4

    5

    6

    7

    8

    9
     
    if (has_nav_menu ( 'primary'))
    wp_nav_menu (array (
    ...
    'Theme_location' => 'primary',
    ...
    )
    );
     

    Menu này đặt trên một trang qua admin panel, từ đó cũng cho phép các trang khác đặt menu (có hình dạng tương tự) ở cùng một vị trí.
    Ta có thể tạo custom setting thông qua parameters hàm wp_nav_menu(), nhưng nếu bạn cần tạo custom menu, hãy làm như sau:
    [list="box-sizing: border-box; padding-right: 0px; padding-left: 0px; color: rgb(51, 51, 51); font-family: Roboto; font-size: 16px; background-color: rgb(255, 255, 255);"]
    [*]Tạo inheritance class từ 
    Code:
    Walker_Nav_Menu
    [size]
    , tại đây bạn có thể viết custom functionality của riêng mình:
    class Custom_Walker_Nav_Menu extends Walker_Nav_Menu {…}[/size]

    [*]Khi đang hiển thị menu, thêm một parameter walker nữa:

    [/list]

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10
     
    if( has_nav_menu( 'primary' ) )
    wp_nav_menu( array(
             ...
             'theme_location' => 'primary',
             'walker'       => new Custom_Walker_Nav_Menu
             ...
             )
    );
     

    Q: giải thích vòng lặp là gì, vòng lặp làm việc như thế nào?
    Vòng lặp là “chu kỳ” WordPress tạo nội dung trang. Nếu chỉ có một trang duy nhất, như 
    Code:
    page.php
    [size]
     hay 
    [/size]
    Code:
    ingle.php
    [size]
    , chu kỳ sẽ giữ nguyên với template, nhưng sẽ chỉ được thực hiện một lần. Nếu bạn có 
    [/size]
    Code:
    search.php
    [size]

    [/size]
    Code:
    archive.php
    [size]
     hoặc 
    [/size]
    Code:
    index.php
    [size]
    , chu kỳ sẽ diễn ra vô số lần cho đến khi yêu cầu (dựa theo truy vấn URL, và object được hình thành như thế nào 
    [/size]
    Code:
    wp_query
    [size]
    ) được thỏa mãn. Vòng lặp sẽ chạy các post trong global 
    [/size]
    Code:
    $wp_query
    [size]
     object.[/size]
    Q: giải thích sự khác nhau giữa hàm bắt đầu với 
    Code:
    the_
    [size]
     và những hàm khác.[/size]
    Hàm có đầu 
    Code:
    the_
    [size]
     chuyên dùng cho vòng lặp, và không thể sử dụng được ngoài chu kỳ.[/size]
    Q: Trình bày custom post type; tại sao ta dùng chúng, và tạo bằng cách nào?
    Custom post types cần thiết để phá vỡ nội dung một cách logic. Ví dụ như, ta muốn liệt kê tất cả sale manager trong công ty, từ đó khách hàng có thể trực tiếp liên hệ với họ bằng website. Giả sử, phòng sale có 20 người, và có một người có thể nghỉ việc hoặc vào làm bất cứ lúc nào. Vì vậy, với nhiệm vụ này, action logic nhất là tạo post type Team và trong template, liệt kê những người trong post type Team.
    Một ví dụ tạo custom post type:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21
     
    add_action( 'init', 'theme_create_post_type' );
    function theme_create_post_type()
    {
             register_post_type( 'team',
         array(
                      'labels' => array(
                                 'name' => __( 'Team' ),
                                 'singular_name' => __( 'team' ),
                                  ),
                      'publicly_queryable' => true,
                      'public' => true,
    'show_ui' => true,
                      'hierarchical' => false,
                      'menu_position' => null,
                      'query_var' => true,
                      'supports' => array('title','editor','thumbnail','custom-fields','comments')
         )
             );
    }
     

    Custom post type được tạo tại action 
    Code:
    init
    [size]
    . Vì vậy, bạn cần phải tạo action và đặt tên 
    [/size]
    Code:
    register_post_type()
    [size]
     trong function với hệ parameters mong muốn.[/size]
    Q: Trình bày cách lấy post từ custom post type và custom taxonomy.
    Ví dụ như: ta có post type Team và taxonimy Department, và trong custom taxonomy, ta có term Managers. Nhiệm vụ của chúng ta là hiển thị tất cả manager.
    Giả sử “slug” của term Managers trong custom taxonomy Department bằng với Managers, ta có thể dùng WP_Query class, như sau:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13
     
    $args = array(
             'post_type' => 'team',
             'tax_query' => array(
                         array(
                                     'taxonomy' => 'department',
                                     'field' => 'slug',
                                     'terms' => 'managers',
                         ),
             ),
    );
    $query = new WP_Query( $args );
     

    Q: trình bày shortcode và cho một vài ví dụ.
    Shortcode dùng để tạo macros (mà sau đó có thể dùng trong nội dung của post). Trong WordPress, Shortcode được bao trong dấu ngoặc vuông 
    Code:
    []
    [size]
    . Có thể dùng Shortcode trong post của content editor hoặc trong pattern, nếu bạn áp dụng hàm 
    [/size]
    Code:
    do_shortcode()
    [size]
    . Ví dụ đơn giản nhất là khi client không biết HTML, nhưng lại cần thêm gì đó vào nội dung của post.[/size]
    Trong WordPress, ta có thể tạo ba kiểu shortcode. Tuy nhiên, do tính chất tùy biến mạnh mẽ. ta có thể có vô số loại shortcode. Chú ý, hàm xử lý shortcode phải trả giá trị, chứ không hiển thị. Ví dụ, nếu ta cần hiển thị cụm từ “Hello World”, ta sẽ viết trong 
    Code:
    functions.php
    [size]
     như sau:[/size]

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15
     
    function hworld_func( $atts ){
             return ‘
    Hello world
    ’;

    }
    add_shortcode( 'hworld', 'hworld_func' );
     
    Để shortcode làm việc, ta phải thêm `[hworld]` vào nội dung post.
    Nếu phải điều chỉnh shortcode từ admin panel, ta có thể thêm parameters vào đó, chẳng hạn như: `[hworld cssclass = "red"]`
    Một code trong `functions.php` như sau:
     
    function hworld_func( $atts ){
             return ‘
    Hello world
    ’;

    }
    add_shortcode( 'hworld', 'hworld_func' );
     

    Hơn nữa, giống như parameters, ta có thể tự xử lý text. Để làm điều đó, shortcode phải giống như sau:

    1

    2

    3

    4

    5

    6

    7

    8

    9
     
    [hworld cssclass = "red"] Hello world [/ hworld]
    Và rồi `functions.php` sẽ như sau:
     
    function hworld_func( $atts, $content ){
             return ‘
    ’ . $content . ’
    ’;

    }
    add_shortcode( 'hworld', 'hworld_func' );
     

    Q:mô tả các bước tạo widget. Trình bày các hàm widget chủ đạo.
    Trong WordPress, bạn có thể tạo custom widget bằng cách tạo class kế thừa hàm cơ bản từ 
    Code:
    WP_Widget
    [size]
     class.[/size]
    Các hàm chính trong widget class:

    • Code:
      __construct()

      : constructor của widget, nó sẽ thêm wdget vào admin panel.


    • Code:
      widget(

      $ args, $ instance
      Code:
      \)
      [size]
      : hiển thị nội dung trên front-end dựa trên argument (tham số) của hàm. 
      [/size]
      Code:
      $ args
      [size]
       là widget argument được đặt trong sidebar để bao quanh widget. 
      [/size]
      Code:
      $ instance
      [size]
       là parameter của widget, và có thể điều chỉnh trong admin area.[/size]

    • Code:
      update($ new_instance, $ old_instance)

      : một tính năng lưu trữ tùy chọn widget mới, nếu quản trị viên thay đổi chúng trong admin panel.


    • Code:
      form($ instance)

      : tại widget setting từ trong admin panel trên trang 
      Code:
      widgets.php
      [size]
      .[/size]


    Để widget hoạt động, điều cuối cùng ta cần là: action 
    Code:
    widgets_init
    [size]
     đính kèm theo hàm record (register) nó:[/size]

    1

    2

    3
     
    add_action ( 'widgets_init', create_function ( '', 'return register_widget ( "CustomWidget");'));
     

    Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang

    Đăng ký thành viên và bình luận

    Bạn cần phải đăng ký để bình luận.

    Tạo tài khoản

    Tham gia vào cộng đồng bằng cách tạo tại khoản, nó thật dễ dàng!


    Tạo tài khoản mới

    Đăng nhập

    Đã có tài khoản? Không thành vấn đề, hãy đăng nhập.


    Đăng nhập

     
    Permissions in this forum:
    Bạn không có quyền trả lời bài viết