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

Your Code Can be Poetry Too

Your Code Can be Poetry Too

Presented on February 9th 2023 at the WP Lisbon meetup, Lisbon, Portugal and February 16th 2023 at the WP Porto meetup, Porto, Portugal.
https://www.meetup.com/wordpress-lisboa/events/290894838/
https://www.meetup.com/wp-porto/events/291447516/
---------------------------------------------------------------
Ever heard of the WordPress Coding standards ? Ever wondered why you - and your development team - should use them ?

In contrast to most coding standards, using the WordPress Coding Standards is about so much more than just code style. It is about best practices, modern code, preventing conflicts with other themes and plugins and can even help safeguard you against some common security vulnerabilities.

No matter whether you are a developer or you can't tell divs from eval's, the WordPress Coding Standards can help you. Let me tell you how...

Juliette Reinders Folmer

February 09, 2023
Tweet

More Decks by Juliette Reinders Folmer

Other Decks in Programming

Transcript

  1. Your Code Can be Poetry Too
    Introduction to WordPressCS

    View Slide

  2. Hello!
    Juliette
    Reinders Folmer
    @jrf_nl @jrfnl @jrf
    @[email protected]

    View Slide

  3. WordPressCS !== Code Style

    View Slide

  4. WordPressCS === Coding Standards

    View Slide

  5. WordPressCS === Quality Control

    View Slide

  6. “ Only half of
    programming is coding.
    The other 90% is
    debugging.

    View Slide

  7. hotblack

    View Slide

  8. Marnhe du Plooy

    View Slide

  9. Reviewing Code [1]
    function my_prefix_print_link( $url, $link_text ) {
    printf(
    '%2$s',
    $url,
    esc_html( $link_text ),
    );
    }

    View Slide

  10. Reviewing Code [1]
    function my_prefix_print_link( $url, $link_text ) {
    printf(
    '%2$s',
    $url,
    esc_html( $link_text ),
    );
    }

    View Slide

  11. Reviewing Code [2]
    function my_prefix_verify_answer() {
    if ( strpos( $_POST['phrase'], "It's a brand new day" ) != false ) {
    echo esc_html( 'Congratulations, you got it right!', 'domain' );
    } else {
    printf(
    esc_html( 'Sorry, %s was the wrong answer', 'domain' ),
    $_POST['phrase']
    );
    }
    }

    View Slide

  12. Reviewing Code [2]
    function my_prefix_verify_answer() {
    if ( strpos( $_POST['phrase'], "It's a brand new day" ) != false ) {
    echo esc_html( 'Congratulations, you got it right!', 'domain' );
    } else {
    printf(
    esc_html( 'Sorry, %s was the wrong answer', 'domain' ),
    $_POST['phrase']
    );
    }
    }

    View Slide

  13. Reviewing Code [3]
    function admin_page_header() {
    ?>


    My Admin Page
    = _e( 'Don\'t forget to save after changing the
    settings', TEXT_DOMAIN ); ?>
    }

    View Slide

  14. Reviewing Code [3]
    function admin_page_header() {
    ?>


    My Admin Page
    = _e( 'Don\'t forget to save after changing the
    settings', TEXT_DOMAIN ); ?>
    }

    View Slide

  15. Reviewing Code [4]
    function my_prefix_find_post( $search ) {
    global $wpdb, $id;
    $result = $wpdb->get_col(
    "SELECT post_id FROM $wpdb->posts WHERE post_title
    LIKE '$search';"
    );
    foreach ( $result as $id ) {
    // Do something.
    }
    }

    View Slide

  16. Reviewing Code [4]
    function my_prefix_find_post( $search ) {
    global $wpdb, $id;
    $result = $wpdb->get_col(
    "SELECT post_id FROM $wpdb->posts WHERE post_title
    LIKE '$search';"
    );
    foreach ( $result as $id ) {
    // Do something.
    }
    }

    View Slide

  17. How WordPressCS Can Help
    ✓ Security
    ✓ Interoperability
    ✓ WP Compatibility
    ✓ Internationalization
    ✓ Best Practices
    ✓ Documentation
    ✓ Consistency
    ✓ Readability
    ✓ PHP Compatibility

    View Slide

  18. PHP
    • http://php.net/download
    Comp
    oser
    • https://getcomposer.org/download/
    Install
    • Install via Composer:
    composer global require –dev
    wp-coding-standards/wpcs
    phpcompatibility/phpcompatibility-wp
    Update
    • Update via Composer:
    composer global update wp-coding-standards/wpcs
    --with-dependencies
    Run
    • vendor/bin/phpcs -ps .
    --standard=WordPress,PHPCompatibilityWP
    Install / Update

    View Slide

  19. What's Included in WordPressCS 2.x ?
    PHP_CodeSniffer
    Generic
    PEAR
    PSR1, PSR2, PSR12
    Squiz
    Zend
    WordPress
    WordPress
    WordPress-Core
    WordPress-Docs
    WordPress-Extra
    PHPCompatibilityWP
    PHPCompatibility
    PHPCompatibilityWP
    Composer PHPCS Plugin

    View Slide

  20. WordPressCS
    2.x vs 3.x
    Why is it taking so long ??????
    • Re-architecture
    • Rules for modern PHP
    • PHP 7.4
    • PHP 8.0
    • PHP 8.1
    • PHP 8.2

    View Slide

  21. What Will Be Included in WordPressCS 3.x ?
    PHP_CodeSniffer
    Generic
    PEAR
    PSR1, PSR2, PSR12
    Squiz
    Zend
    PHPCSUtils
    WordPress
    WordPress
    WordPress-Core
    WordPress-Docs
    WordPress-Extra
    PHPCSExtra
    Universal
    NormalizedArrays
    PHPCompatibility
    WP
    PHPCompatibility
    PHPCompatibility
    WP
    Composer PHPCS Plugin

    View Slide

  22. Minimal Ruleset – phpcs.xml.dist


    Settings for Project X
    .
    /vendor/





    View Slide

  23. Adding Configuration [1]

    ...







    View Slide

  24. Adding Configuration [2]

    ...









    View Slide

  25. Adding Configuration [3]

    ...









    View Slide

  26. elvis santana
    PHPCS Pro-tips

    View Slide

  27. Explain

    View Slide

  28. phpcs --standard=WordPress --generator=Text (Markdown|HTML)

    View Slide

  29. --filter=GitModified
    --filter=GitStaged

    View Slide

  30. Thanks!
    Any
    questions ?
    Slides: https://speakerdeck.com/jrf
    @jrf_nl @jrfnl @jrf
    @[email protected]

    View Slide