10 Useful WordPress functions (and maybe more)

10 Useful WordPress functions (and maybe more)

You can't touch the WordPress core, but you can read it! (Slides for my talk at WordPress Meetup Milano)

Bfacf748069915ec6f7ed4ac8d5457d7?s=128

Giustino Borzacchiello

May 05, 2015
Tweet

Transcript

  1. wptexturize _wptexturize_pushpop_element wpautop shortcode_unautop seems_utf8 _wp_specialchars wp_specialchars_decode wp_check_invalid_utf8 utf8_uri_encode remove_accents

    sanitize_file_name sanitize_user sanitize_key sanitize_title sanitize_title_for_query sanitize_title_with_dashes sanitize_sql_orderby sanitize_html_class convert_chars balanceTags force_balance_tags format_to_edit zeroise backslashit trailingslashit untrailingslashit addslashes_gpc stripslashes_deep urlencode_deep rawurlencode_deep antispambot _make_url_clickable_cb _make_web_ftp_clickable_cb _make_email_clickable_cb make_clickable _split_str_by_whitespace wp_rel_nofollow wp_rel_nofollow_callback translate_smiley convert_smilies is_email wp_iso_descrambler _wp_iso_convert get_gmt_from_date get_date_from_gmt iso8601_timezone_to_offset iso8601_to_datetime popuplinks sanitize_email human_time_diff wp_trim_excerpt wp_trim_words ent2ncr wp_richedit_pre wp_htmledit_pre _deep_replace esc_sql esc_url esc_url_raw htmlentities2 esc_js esc_html esc_attr esc_textarea tag_escape wp_make_link_relative sanitize_option wp_parse_str wp_pre_kses_less_than wp_pre_kses_less_than_callback wp_sprintf wp_sprintf_l wp_html_excerpt links_add_base_url _links_add_base links_add_target _links_add_target normalize_whitespace wp_strip_all_tags sanitize_text_field wp_basename capital_P_dangit sanitize_mime_type sanitize_trackback_urls wp_slash wp_unslash get_url_in_content 10* useful WordPress functions *maybe more WordPress Meetup Milano - 5 May 2015
  2. Giustino Borzacchiello @jubstuff

  3. The #1 rule of WordPress development

  4. None
  5. DON’T TOUCH THE CORE

  6. The core

  7. The core too hot!

  8. The core

  9. The core

  10. /wp-admin Functions and templates to bootstrap the WordPress admin. /wp-includes

    Most WordPress functionality is here.
  11. DON’T TOUCH THE CORE ... but you can read it!

  12. checked() Compares the first two arguments and if identical marks

    as checked.
  13. wp-includes/general-template.php <input name="my_control" type="radio" value="my_value" <?php echo ($value === 'my_value')

    ? 'checked="checked"' : '' ?>> checked()
  14. wp-includes/general-template.php <input name="my_control" type="radio" value="my_value" <?php checked( 'my_value', $value); ?>

    > checked()
  15. selected() Compares the first two arguments and if identical marks

    as selected. wp-includes/general-template.php disabled() Compares the first two arguments and if identical marks as disabled.
  16. Escaping functions. esc_*

  17. ?

  18. Escaping functions. < becomes &lt; esc_*()

  19. ➢ esc_sql ➢ esc_url ➢ esc_url_raw ➢ esc_js ➢ esc_html

    ➢ esc_attr ➢ esc_textarea esc_*() wp-includes/formatting.php
  20. echo "Hello WordPress Meetup; <script>alert('Ciao!');</script>"; // Hello WordPress Meetup; esc_attr()

    wp-includes/formatting.php
  21. echo esc_attr("Hello WordPress Meetup; <script>alert('Ciao’) </script>"); // Hello WordPress Meetup;

    // &lt;script&gt;alert(&#039;Ciao!&#039;);&lt;/script&gt; esc_attr() wp-includes/formatting.php
  22. // Retrieving data from user input... $name = ( isset(

    $_POST['name'] ) ) ? $_POST['name'] : ''; // ...and displaying it <input type="text" name="name" value="<?php echo esc_attr($name); ? >"> Example: esc_attr() wp-includes/formatting.php
  23. Test if the current browser runs on a mobile device

    (smart phone, tablet, etc.). wp_is_mobile()
  24. function add_my_cool_js_effect_on_desktop() { if ( wp_is_mobile() ) { return; }

    wp_enqueue_script('cool-js-effect', PATH_TO_MY_JS); } wp_is_mobile() wp-includes/vars.php
  25. Utility functions for filters. __return_*()

  26. ➢ __return_empty_array ➢ __return_null ➢ __return_empty_string ➢ __return_zero ➢ __return_false

    ➢ __return_true __return_*() wp-includes/functions.php
  27. add_filter( 'show_admin_bar', function(){ return false; } ); Example: __return_false() wp-includes/functions.php

  28. add_filter( 'show_admin_bar', '__return_false' ); Example: __return_false() wp-includes/functions.php

  29. Display a noindex meta tag. wp_no_robots()

  30. /** * Display a noindex meta tag. * @since 3.3.0

    */ function wp_no_robots() { echo "<meta name='robots' content='noindex,follow' />\n"; } wp_no_robots() wp-includes/general-template.php
  31. // Add this to block search engines on page named

    'no-search' add_action('init', function() { if(is_page('no-search')) { add_action( 'wp_head', 'wp_no_robots' ); } }); wp_no_robots() wp-includes/general-template.php
  32. Merge user defined arguments into defaults array. wp_parse_args()

  33. $defaults = ['count' => 5, 'orderby' => 'date', 'order' =>

    'asc',]; $params = ['orderby' => 'title', 'order' => 'desc',]; $options = wp_parse_args($params, $defaults); // $options = [ // 'count' => 5, // 'orderby' => 'title', // 'order' => 'desc', // ] wp_parse_args() wp-includes/functions.php
  34. // MyWidget.php public function form( $instance ) { $defaults =

    array( 'num_entries' => 10, 'widget_title' => __( 'My title', 'ten-func' ), 'scale' => 10, ); $instance = wp_parse_args( (array) $instance, $defaults ); // display the form } wp_parse_args() wp-includes/functions.php
  35. Extract a slice of an array, given a list of

    keys. wp_array_slice_assoc()
  36. $arr = ['one'=> 1, 'two'=> 2, 'three'=> 3, 'four'=> 4,

    'five'=> 5 ]; $odd = wp_array_slice_assoc($arr, ['one', 'three', 'five']); ------------------ array (size=3) 'one' => int 1 'three' => int 3 'five' => int 5 wp_array_slice_assoc() wp-includes/functions.php
  37. Send a JSON response back to an Ajax request, indicating

    success. wp_send_json_success()
  38. jQuery(document).ready(function($) { var data = { 'action': 'my_action', 'post_id': 4

    }; jQuery.post(my_ajax_url, data, function(response) { alert('This is from PHP: ' + response); }); }); wp_send_json_success() wp-includes/functions.php
  39. add_action('wp_ajax_nopriv_my_action', 'my_ajax_handler'); function my_ajax_handler() { $post_id = intval($_POST['post_id']); // Retrieve

    some $output_data related to that post wp_send_json_success($output_data); } wp_send_json_success() wp-includes/functions.php
  40. jQuery(document).ready(function($) { var data = { 'action': 'my_action' }; jQuery.post(my_ajax_url,

    data, function(response) { alert('This is from PHP: ' + response); }); }); wp_send_json_success() wp-includes/functions.php { success: true, data: $output_data }
  41. wp_send_json_error() Send a JSON response back to an Ajax request,

    indicating failure. wp-includes/functions.php wp_send_json() Send a JSON response back to an Ajax request.
  42. Where do I start?

  43. /wp-includes/general-template.php Mostly template tags. /wp-includes/functions.php Functions, functions everywhere.

  44. /wp-includes/formatting.php Strings, dates, and general formatting functions. /wp-includes/pluggable.php Overwritable functions.

    You can be creative, here (if you know what you are doing).
  45. Developer reference https://developer.wordpress.org/reference/

  46. PHP xref http://phpxref.ftwr.co.uk/wordpress/

  47. wpseek http://wpseek.com/

  48. Try to find these functions: wp_list_pluck() wp_list_filter() wp_extract_urls() make_clickable() add_query_arg()

    _split_str_by_whitespace() wp_remote_get() wp_parse_id_list()
  49. None
  50. grazie.

  51. grazie. Domande?

  52. Earth image http://www.desy.de/information__services/press/press_releases/2013/pr_071113/index_eng.html