what i wish i d known when i started
play

What I Wish Id Known When I Started Erick Hitter @ethitter - PowerPoint PPT Presentation

What I Wish Id Known When I Started Erick Hitter @ethitter https://ethitter.com/ FIRST Cant check if the users logged in until init May work before because WPs trying to protect you Dont try to conditionally load


  1. What I Wish I’d Known When I Started Erick Hitter @ethitter https://ethitter.com/

  2. FIRST Can’t check if the user’s logged in until init • May work before because WP’s trying to protect you • Don’t try to conditionally load plugin files at plugins_loaded, for example

  3. SECOND The query isn’t available until wp • Can’t use query conditional tags earlier, like at init • is_admin() is an exception

  4. THIRD Never build a manual link again • WordPress is a CMS, it’s dynamic • Domains change, permalink structures change • Plugins and themes shouldn’t break because of a URL

  5. Link Functions • get_permalink() ¡ • get_page_by_path( ¡'about' ¡) ¡ • get_post_type_archive_link( ¡'waffles' ¡) ¡ • user_trailingslashit() ¡ • get_year_link() ¡ • get_adjacent_post()

  6. Link Functions • add_query_arg() ¡ • remove_query_arg()

  7. 
 
 
 Link Functions • home_url( ¡'/' ¡) 
 Many more in 
 wp-­‑includes/link-­‑template.php .

  8. FOURTH Escaping and Sanitization • Stephane speaks at 3:15pm • WordPress has lots of functions to protect against common security vulnerabilities • Never trust the user

  9. FIFTH Nonces • If you’re building a form, you should know about these. CSRF is bad. • Again, Stephane speaks at 3:15pm

  10. SIXTH Ajax is easy with WordPress • Natively supported

  11. Ajax • Hook your function to one of two variable actions • Use the same action name with the request to admin-­‑ajax.php • check_ajax_referer() or use a nonce

  12. Ajax • wp_ajax_{$your_action} ¡ • wp_ajax_nopriv_{$your_action} ¡ • Hook to both if logged-in state isn’t relevant.

  13. SEVENTH Database Interactions • Don’t

  14. Database Interactions • Use custom post types and custom taxonomies instead. • If you must, always $wpdb-­‑>prepare() your queries. • CPTs and CTs have extensive APIs, much easier to deal with • More portable that way, too • Many caching benefits in the right environments • If you must, $wpdb->prepare() uses sprintf-style notation to secure things

  15. Database Interactions • $wpdb-­‑>get_var() ¡ • $wpdb-­‑>get_col() ¡ • $wpdb-­‑>get_row() ¡ • $wpdb-­‑>insert( ¡$table, ¡$data, ¡$format ¡) ¡ • $wpdb-­‑>update( ¡$table, ¡$data, ¡$where, ¡ $format, ¡$where_format ¡) ¡ • $wpdb-­‑>query() • Just some examples • Simplify interactions, make it easy to deal with sets of data • Simpler interactions than writing SQL

  16. EIGHTH Enqueue All The Things • Rarely a reason to write a script or link tag for static assets

  17. Register, then enqueue! • wp_register_style() ¡ • wp_register_script() • Makes them ready for reuse, but doesn’t load them yet • Then use with conditional tags, or in page, to load when needed • Pagespeed and other tools consider the number of files loaded

  18. Enqueue! • wp_enqueue_style() ¡ • wp_enqueue_script() • Use already-registered scripts • Either your own, or those Core includes • Enqueue a script you know you need

  19. But why? • Reusable • Dependencies • Versioning • Mini fi cation • Concatenation • CDN • Won’t load seven copies of same script • Ensure jQuery, Backbone, or whatever is loaded • Bust caches on update • Many hosts optimize assets when loaded this way

  20. NINTH Cache All The Things • Performance • Less resource usage, potential cost savings

  21. Caching • Transients • Object Cache • Explain di fg erence • Persistent cache implication • Use transients unless you know object cache will always be there

  22. TENTH Remote Requests • Always use the API!

  23. WP HTTP API • wp_remote_get() ¡ • wp_remote_post() ¡ • wp_remote_head() ¡ • wp_remote_request() ¡ • wp_remote_retrieve_response_code() • Cached • Selects best available method

  24. ELEVENTH Miscellany

  25. Miscellany • get_queried_object() ¡ • get_queried_object_id() ¡ • wp_parse_args() • get_queried_object()/get_queried_object_id() - useful in a template that’s shared across multiple views • wp_parse_args() - defaults, avoid notices when keys aren’t defined

  26. Thanks https://eth.pw/wcywg15 Erick Hitter @ethitter https://ethitter.com/

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend