Skip to content

Instantly share code, notes, and snippets.

@Rarst
Last active August 5, 2021 04:14
Show Gist options
  • Save Rarst/183c38c499515b6d8609 to your computer and use it in GitHub Desktop.
Save Rarst/183c38c499515b6d8609 to your computer and use it in GitHub Desktop.
WordPress Live Templates for PhpStorm
  1. Close PhpStorm.

  2. Download WordPress.xml configuration file from this gist.

  3. Place file into .WebIdeXX/config/templates in your user profile directory, differs by operating system.

  4. Restart PhpStorm.

  5. WordPress template group should be available in Settings > Live Templates.

  6. Suggest functions to add in comments! :)

<?xml version="1.0" encoding="UTF-8"?>
<templateSet group="WordPress">
<template name="aa" value="add_action( '$hook$', '$callback$' );&#10;$END$" description="add_action" toReformat="false" toShortenFQNames="true">
<variable name="hook" expression="" defaultValue="" alwaysStopAt="true" />
<variable name="callback" expression="" defaultValue="" alwaysStopAt="true" />
<context>
<option name="HTML_TEXT" value="false" />
<option name="HTML" value="false" />
<option name="XSL_TEXT" value="false" />
<option name="XML" value="false" />
<option name="SQL" value="false" />
<option name="JSP" value="false" />
<option name="CSS_PROPERTY_VALUE" value="false" />
<option name="CSS_DECLARATION_BLOCK" value="false" />
<option name="CSS_RULESET_LIST" value="false" />
<option name="CSS" value="false" />
<option name="CUCUMBER_FEATURE_FILE" value="false" />
<option name="JAVA_SCRIPT" value="false" />
<option name="TypeScript" value="false" />
<option name="HAML" value="false" />
<option name="PHP" value="true" />
<option name="OTHER" value="false" />
</context>
</template>
<template name="aam" value="add_action( '$hook$', array( $class$, '$method$' ) );$END$" description="add_action &gt; method" toReformat="false" toShortenFQNames="true">
<variable name="hook" expression="" defaultValue="" alwaysStopAt="true" />
<variable name="class" expression="&quot;$this&quot;" defaultValue="" alwaysStopAt="true" />
<variable name="method" expression="hook" defaultValue="" alwaysStopAt="true" />
<context>
<option name="HTML_TEXT" value="false" />
<option name="HTML" value="false" />
<option name="XSL_TEXT" value="false" />
<option name="XML" value="false" />
<option name="SQL" value="false" />
<option name="JSP" value="false" />
<option name="CSS_PROPERTY_VALUE" value="false" />
<option name="CSS_DECLARATION_BLOCK" value="false" />
<option name="CSS_RULESET_LIST" value="false" />
<option name="CSS" value="false" />
<option name="CUCUMBER_FEATURE_FILE" value="false" />
<option name="JAVA_SCRIPT" value="false" />
<option name="TypeScript" value="false" />
<option name="HAML" value="false" />
<option name="PHP" value="true" />
<option name="OTHER" value="false" />
</context>
</template>
<template name="afm" value="add_filter( '$hook$', array( $class$, '$method$' ) );$END$" description="add_filter &gt; method" toReformat="false" toShortenFQNames="true">
<variable name="hook" expression="" defaultValue="" alwaysStopAt="true" />
<variable name="class" expression="&quot;$this&quot;" defaultValue="" alwaysStopAt="true" />
<variable name="method" expression="hook" defaultValue="" alwaysStopAt="true" />
<context>
<option name="HTML_TEXT" value="false" />
<option name="HTML" value="false" />
<option name="XSL_TEXT" value="false" />
<option name="XML" value="false" />
<option name="SQL" value="false" />
<option name="JSP" value="false" />
<option name="CSS_PROPERTY_VALUE" value="false" />
<option name="CSS_DECLARATION_BLOCK" value="false" />
<option name="CSS_RULESET_LIST" value="false" />
<option name="CSS" value="false" />
<option name="CUCUMBER_FEATURE_FILE" value="false" />
<option name="JAVA_SCRIPT" value="false" />
<option name="TypeScript" value="false" />
<option name="HAML" value="false" />
<option name="PHP" value="true" />
<option name="OTHER" value="false" />
</context>
</template>
<template name="ea" value="esc_attr( $SELECTION$ )" description="esc_attr" toReformat="false" toShortenFQNames="true">
<context>
<option name="HTML_TEXT" value="true" />
<option name="HTML" value="true" />
<option name="XSL_TEXT" value="false" />
<option name="XML" value="false" />
<option name="SQL" value="false" />
<option name="JSP" value="false" />
<option name="CSS_PROPERTY_VALUE" value="false" />
<option name="CSS_DECLARATION_BLOCK" value="false" />
<option name="CSS_RULESET_LIST" value="false" />
<option name="CSS" value="false" />
<option name="CUCUMBER_FEATURE_FILE" value="false" />
<option name="JAVA_SCRIPT" value="false" />
<option name="TypeScript" value="false" />
<option name="HAML" value="false" />
<option name="PHP" value="true" />
<option name="OTHER" value="false" />
</context>
</template>
<template name="wpa" value="$$$args$ = wp_parse_args( $$$source$, array(&#10;&#9;$key$ =&gt; $value$,&#10;) );" description="wp_parse_args" toReformat="true" toShortenFQNames="true">
<variable name="args" expression="" defaultValue="" alwaysStopAt="true" />
<variable name="source" expression="args" defaultValue="" alwaysStopAt="true" />
<variable name="key" expression="" defaultValue="" alwaysStopAt="true" />
<variable name="value" expression="" defaultValue="" alwaysStopAt="true" />
<context>
<option name="HTML_TEXT" value="false" />
<option name="HTML" value="false" />
<option name="XSL_TEXT" value="false" />
<option name="XML" value="false" />
<option name="SQL" value="false" />
<option name="JSP" value="false" />
<option name="CSS_PROPERTY_VALUE" value="false" />
<option name="CSS_DECLARATION_BLOCK" value="false" />
<option name="CSS_RULESET_LIST" value="false" />
<option name="CSS" value="false" />
<option name="CUCUMBER_FEATURE_FILE" value="false" />
<option name="JAVA_SCRIPT" value="false" />
<option name="TypeScript" value="false" />
<option name="HAML" value="false" />
<option name="PHP" value="true" />
<option name="OTHER" value="false" />
</context>
</template>
<template name="af" value="add_filter( '$hook$', '$callback$' );&#10;$END$" description="add_filter" toReformat="false" toShortenFQNames="true">
<variable name="hook" expression="" defaultValue="" alwaysStopAt="true" />
<variable name="callback" expression="" defaultValue="" alwaysStopAt="true" />
<context>
<option name="HTML_TEXT" value="false" />
<option name="HTML" value="false" />
<option name="XSL_TEXT" value="false" />
<option name="XML" value="false" />
<option name="SQL" value="false" />
<option name="JSP" value="false" />
<option name="CSS_PROPERTY_VALUE" value="false" />
<option name="CSS_DECLARATION_BLOCK" value="false" />
<option name="CSS_RULESET_LIST" value="false" />
<option name="CSS" value="false" />
<option name="CUCUMBER_FEATURE_FILE" value="false" />
<option name="JAVA_SCRIPT" value="false" />
<option name="TypeScript" value="false" />
<option name="HAML" value="false" />
<option name="PHP" value="true" />
<option name="OTHER" value="false" />
</context>
</template>
<template name="__" value="__( $SELECTION$, '$textdomain$' )" description="__" toReformat="false" toShortenFQNames="true">
<variable name="textdomain" expression="" defaultValue="" alwaysStopAt="true" />
<context>
<option name="HTML_TEXT" value="true" />
<option name="HTML" value="true" />
<option name="XSL_TEXT" value="false" />
<option name="XML" value="false" />
<option name="SQL" value="false" />
<option name="JSP" value="false" />
<option name="CSS_PROPERTY_VALUE" value="false" />
<option name="CSS_DECLARATION_BLOCK" value="false" />
<option name="CSS_RULESET_LIST" value="false" />
<option name="CSS" value="false" />
<option name="CUCUMBER_FEATURE_FILE" value="false" />
<option name="JAVA_SCRIPT" value="false" />
<option name="TypeScript" value="false" />
<option name="HAML" value="false" />
<option name="PHP" value="true" />
<option name="OTHER" value="false" />
</context>
</template>
<template name="aafu" value="add_action( '$hook$', function () {&#10;&#9;$END$&#10;} );" description="add_action &gt; closure" toReformat="false" toShortenFQNames="true">
<variable name="hook" expression="" defaultValue="" alwaysStopAt="true" />
<context>
<option name="HTML_TEXT" value="false" />
<option name="HTML" value="false" />
<option name="XSL_TEXT" value="false" />
<option name="XML" value="false" />
<option name="SQL" value="false" />
<option name="JSP" value="false" />
<option name="CSS_PROPERTY_VALUE" value="false" />
<option name="CSS_DECLARATION_BLOCK" value="false" />
<option name="CSS_RULESET_LIST" value="false" />
<option name="CSS" value="false" />
<option name="CUCUMBER_FEATURE_FILE" value="false" />
<option name="JAVA_SCRIPT" value="false" />
<option name="TypeScript" value="false" />
<option name="HAML" value="false" />
<option name="PHP" value="true" />
<option name="OTHER" value="false" />
</context>
</template>
<template name="rpt" value="register_post_type( '$SLUG$', array(&#10;&#9;'description' =&gt; '$DESCRIPTION$',&#10;&#9;'labels' =&gt; array(&#10;&#9;&#9;'name' =&gt; _x( '$PLURAL$', 'post type general name', '$DOMAIN$' ),&#10;&#9;&#9;'singular_name' =&gt; _x( '$SINGULAR$', 'post type singular name', '$DOMAIN$' ),&#10;&#9;&#9;'menu_name' =&gt; _x( '$PLURAL$', 'admin menu', '$DOMAIN$' ),&#10;&#9;&#9;'name_admin_bar' =&gt; _x( '$SINGULAR$', 'add new $SLUG$ on admin bar', '$DOMAIN$' ),&#10;&#9;&#9;'add_new' =&gt; _x( 'Add New', 'post_type', '$DOMAIN$' ),&#10;&#9;&#9;'add_new_item' =&gt; __( 'Add New $SINGULAR$', '$DOMAIN$' ),&#10;&#9;&#9;'edit_item' =&gt; __( 'Edit $SINGULAR$', '$DOMAIN$' ),&#10;&#9;&#9;'new_item' =&gt; __( 'New $SINGULAR$', '$DOMAIN$' ),&#10;&#9;&#9;'view_item' =&gt; __( 'View $SINGULAR$', '$DOMAIN$' ),&#10;&#9;&#9;'search_items' =&gt; __( 'Search $PLURAL$', '$DOMAIN$' ),&#10;&#9;&#9;'not_found' =&gt; __( 'No $PLURALLOWERCASE$ found.', '$DOMAIN$' ),&#10;&#9;&#9;'not_found_in_trash' =&gt; __( 'No $PLURALLOWERCASE$ found in Trash.', '$DOMAIN$' ),&#10;&#9;&#9;'parent_item_colon' =&gt; __( 'Parent $SINGULAR$:', '$DOMAIN$' ),&#10;&#9;&#9;'all_items' =&gt; __( 'All $PLURAL$', '$DOMAIN$' ),&#10;&#9;),&#10;&#9;'public' =&gt; $PUBLIC$,&#10;&#9;'hierarchical' =&gt; $HIERARCHICAL$,&#10;&#9;'exclude_from_search' =&gt; $NOSEARCH$,&#10;&#9;'publicly_queryable' =&gt; $QUERYABLE$,&#10;&#9;'show_ui' =&gt; $UI$,&#10;&#9;'show_in_menu' =&gt; $MENU$,&#10;&#9;'show_in_nav_menus' =&gt; $NAVMENU$,&#10;&#9;'show_in_admin_bar' =&gt; $ADMINBAR$,&#10;&#9;'menu_position' =&gt; $MENUPOS$,&#10;&#9;'menu_icon' =&gt; $ICON$,&#10;&#9;'capability_type' =&gt; '$CAPABILITY$',&#10;&#9;'capabilities' =&gt; array(),&#10;&#9;'map_meta_cap' =&gt; null,&#10;&#9;'supports' =&gt; array( 'title', 'editor' ),&#10;&#9;'register_meta_box_cb' =&gt; $METABOX$,&#10;&#9;'taxonomies' =&gt; array(),&#10;&#9;'has_archive' =&gt; $ARCHIVE$,&#10;&#9;'rewrite' =&gt; array(&#10;&#9;&#9;'slug' =&gt; '$SLUG$',&#10;&#9;&#9;'with_front' =&gt; $WITHFRONT$,&#10;&#9;&#9;'feeds' =&gt; $FEEDS$,&#10;&#9;&#9;'pages' =&gt; $PAGES$,&#10;&#9;),&#10;&#9;'query_var' =&gt; $QUERYVAR$,&#10;&#9;'can_export' =&gt; $EXPORT$,&#10;) );&#10;$END$" description="register_post_type" toReformat="true" toShortenFQNames="true">
<variable name="SLUG" expression="" defaultValue="&quot;post-type&quot;" alwaysStopAt="true" />
<variable name="DESCRIPTION" expression="" defaultValue="&quot;&quot;" alwaysStopAt="true" />
<variable name="PLURAL" expression="" defaultValue="&quot;Posts&quot;" alwaysStopAt="true" />
<variable name="SINGULAR" expression="" defaultValue="&quot;Post&quot;" alwaysStopAt="true" />
<variable name="DOMAIN" expression="" defaultValue="&quot;text-domain&quot;" alwaysStopAt="true" />
<variable name="PLURALLOWERCASE" expression="decapitalize(PLURAL)" defaultValue="" alwaysStopAt="false" />
<variable name="PUBLIC" expression="enum(&quot;false&quot;, &quot;true&quot;)" defaultValue="&quot;false&quot;" alwaysStopAt="true" />
<variable name="HIERARCHICAL" expression="enum(&quot;false&quot;, &quot;true&quot;)" defaultValue="&quot;false&quot;" alwaysStopAt="true" />
<variable name="NOSEARCH" expression="enum(&quot;true&quot;,&quot;false&quot;)" defaultValue="&quot;true&quot;" alwaysStopAt="true" />
<variable name="QUERYABLE" expression="" defaultValue="PUBLIC" alwaysStopAt="false" />
<variable name="UI" expression="" defaultValue="PUBLIC" alwaysStopAt="false" />
<variable name="MENU" expression="" defaultValue="UI" alwaysStopAt="false" />
<variable name="NAVMENU" expression="" defaultValue="PUBLIC" alwaysStopAt="false" />
<variable name="ADMINBAR" expression="" defaultValue="MENU" alwaysStopAt="false" />
<variable name="MENUPOS" expression="enum(&quot;null&quot;,&quot;5&quot;,&quot;10&quot;,&quot;15&quot;,&quot;20&quot;,&quot;25&quot;,&quot;60&quot;,&quot;65&quot;,&quot;70&quot;,&quot;75&quot;,&quot;80&quot;,&quot;100&quot;)" defaultValue="null" alwaysStopAt="true" />
<variable name="ICON" expression="" defaultValue="&quot;null&quot;" alwaysStopAt="true" />
<variable name="CAPABILITY" expression="" defaultValue="&quot;post&quot;" alwaysStopAt="true" />
<variable name="METABOX" expression="" defaultValue="&quot;null&quot;" alwaysStopAt="true" />
<variable name="ARCHIVE" expression="" defaultValue="&quot;false&quot;" alwaysStopAt="true" />
<variable name="WITHFRONT" expression="enum(&quot;true&quot;,&quot;false&quot;)" defaultValue="&quot;true&quot;" alwaysStopAt="true" />
<variable name="FEEDS" expression="" defaultValue="ARCHIVE" alwaysStopAt="false" />
<variable name="PAGES" expression="enum(&quot;true&quot;,&quot;false&quot;)" defaultValue="&quot;true&quot;" alwaysStopAt="true" />
<variable name="QUERYVAR" expression="" defaultValue="&quot;true&quot;" alwaysStopAt="true" />
<variable name="EXPORT" expression="enum(&quot;true&quot;,&quot;false&quot;)" defaultValue="" alwaysStopAt="true" />
<context>
<option name="PHP" value="true" />
</context>
</template>
<template name="rt" value="register_taxonomy( '$SLUG$', array($OBJECT$), array(&#10;&#9;'description' =&gt; '$DESCRIPTION$',&#10;&#9;'labels' =&gt; array(&#10;&#9;&#9;'name' =&gt; _x( '$PLURAL$', 'taxonomy general name', '$DOMAIN$' ),&#10;&#9;&#9;'singular_name' =&gt; _x( '$SINGULAR$', 'taxonomy singular name', '$DOMAIN$' ),&#10;&#9;&#9;'search_items' =&gt; __( 'Search $PLURAL$', '$DOMAIN$' ),&#10;&#9;&#9;'popular_items' =&gt; __( 'Popular $PLURAL$', '$DOMAIN$' ),&#10;&#9;&#9;'all_items' =&gt; __( 'All $PLURAL$', '$DOMAIN$' ),&#10;&#9;&#9;'parent_item' =&gt; __( 'Parent $SINGULAR$', '$DOMAIN$' ),&#10;&#9;&#9;'parent_item_colon' =&gt; __( 'Parent $SINGULAR$:', '$DOMAIN$' ),&#10;&#9;&#9;'edit_item' =&gt; __( 'Edit $SINGULAR$', '$DOMAIN$' ),&#10;&#9;&#9;'view_item' =&gt; __( 'View $SINGULAR$', '$DOMAIN$' ),&#10;&#9;&#9;'update_item' =&gt; __( 'Update $SINGULAR$', '$DOMAIN$' ),&#10;&#9;&#9;'add_new_item' =&gt; __( 'Add New $SINGULAR$', '$DOMAIN$' ),&#10;&#9;&#9;'new_item_name' =&gt; __( 'New $SINGULAR$ Name', '$DOMAIN$' ),&#10;&#9;&#9;'separate_items_with_commas' =&gt; __( 'Separate $PLURALLOWERCASE$ with commas', '$DOMAIN$' ),&#10;&#9;&#9;'add_or_remove_items' =&gt; __( 'Add or remove $PLURALLOWERCASE$', '$DOMAIN$' ),&#10;&#9;&#9;'choose_from_most_used' =&gt; __( 'Choose from the most used $PLURALLOWERCASE$', '$DOMAIN$' ),&#10;&#9;&#9;'not_found' =&gt; __( 'No $PLURALLOWERCASE$ found.', '$DOMAIN$' ),&#10;&#9;),&#10;&#9;'public' =&gt; $PUBLIC$,&#10;&#9;'show_ui' =&gt; $UI$,&#10;&#9;'show_in_nav_menus' =&gt; $MENU$,&#10;&#9;'show_tagcloud' =&gt; $TAGCLOUD$,&#10;&#9;'meta_box_cb' =&gt; $METABOX$,&#10;&#9;'show_admin_column' =&gt; $ADMINCOLUMN$,&#10;&#9;'hierarchical' =&gt; $HIERARCHICAL$,&#10;&#9;'query_var' =&gt; '$QUERYVAR$',&#10;&#9;'rewrite' =&gt; array(&#10;&#9;&#9;'slug' =&gt; '$REWRITESLUG$',&#10;&#9;&#9;'with_front' =&gt; $REWRITEFRONT$,&#10;&#9;&#9;'hierarchical' =&gt; $REWRITEHIERARCHICAL$,&#10;&#9;),&#10;&#9;'capabilities' =&gt; array(),&#10;) );" description="register_taxonomy" toReformat="true" toShortenFQNames="true">
<variable name="SLUG" expression="" defaultValue="&quot;taxonomy&quot;" alwaysStopAt="true" />
<variable name="OBJECT" expression="" defaultValue="" alwaysStopAt="true" />
<variable name="DESCRIPTION" expression="" defaultValue="" alwaysStopAt="true" />
<variable name="PLURAL" expression="" defaultValue="&quot;Tags&quot;" alwaysStopAt="true" />
<variable name="SINGULAR" expression="" defaultValue="&quot;Tag&quot;" alwaysStopAt="true" />
<variable name="DOMAIN" expression="" defaultValue="&quot;text-domain&quot;" alwaysStopAt="true" />
<variable name="PLURALLOWERCASE" expression="decapitalize(PLURAL)" defaultValue="" alwaysStopAt="false" />
<variable name="PUBLIC" expression="enum(&quot;true&quot;,&quot;false&quot;)" defaultValue="&quot;true&quot;" alwaysStopAt="true" />
<variable name="UI" expression="" defaultValue="PUBLIC" alwaysStopAt="false" />
<variable name="MENU" expression="" defaultValue="PUBLIC" alwaysStopAt="false" />
<variable name="TAGCLOUD" expression="" defaultValue="UI" alwaysStopAt="false" />
<variable name="METABOX" expression="" defaultValue="&quot;null&quot;" alwaysStopAt="true" />
<variable name="ADMINCOLUMN" expression="enum(&quot;false&quot;,&quot;true&quot;)" defaultValue="false" alwaysStopAt="true" />
<variable name="HIERARCHICAL" expression="enum(&quot;false&quot;,&quot;true&quot;)" defaultValue="false" alwaysStopAt="true" />
<variable name="QUERYVAR" expression="" defaultValue="SLUG" alwaysStopAt="true" />
<variable name="REWRITESLUG" expression="" defaultValue="SLUG" alwaysStopAt="true" />
<variable name="REWRITEFRONT" expression="enum(&quot;true&quot;,&quot;false&quot;)" defaultValue="true" alwaysStopAt="true" />
<variable name="REWRITEHIERARCHICAL" expression="enum(&quot;true&quot;,&quot;false&quot;)" defaultValue="true" alwaysStopAt="true" />
<context>
<option name="PHP" value="true" />
</context>
</template>
</templateSet>
@KingYes
Copy link

KingYes commented Nov 1, 2014

Nice ! :)

@quasel
Copy link

quasel commented Nov 24, 2014

File Path for mac:
~/Library/Preferences/WebIdeXX/templates

thx for sharing

@christianmagill
Copy link

There is definitely a need for this.

Some suggestions:

Register Post Type
Register Taxonomy
Basic Query/Loop

@Rarst
Copy link
Author

Rarst commented May 6, 2015

Ehm, register post type and taxonomy are already in this. :)

@pronskiy
Copy link

Hi @Rarst,
Therу is a more simple way to share live templates via Settings Repository, please see my fork https://gist.github.com/pronskiy/e0463181ed5bf1f08cdcccb32af87dc6
I'm going to publish a post about this on PhpStorm blog soon.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment