├── .gitignore ├── README.md ├── css └── wp-trigger-netlify-build.css ├── images ├── banner.png ├── iamtimsmith.png ├── logomark.png ├── mvaneijgen.png ├── screenshot1.png └── screenshot2.png ├── js └── wp-trigger-netlify-build.js └── wp-trigger-netlify-build.php /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | js/.DS_Store -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | WP Trigger Netlify Build 3 |

4 | 5 | # WP Trigger Netlify Build 6 | 7 | This plugin was built to make it easier for developers to use WordPress as a headless CMS. It makes it a breeze to trigger builds in [Netlify](https://www.netlify.com/) whenever content is created or updated. 8 | 9 | ## Installation 10 | 11 | You can download the .zip file from [the github repo](https://github.com/iamtimsmith/wp-trigger-netlify-build.git) or clone the repository into the plugins folder using the following code. 12 | 13 | ``` 14 | git clone https://github.com/iamtimsmith/wp-trigger-netlify-build.git 15 | ``` 16 | 17 | Next you have to install and activate the plugin within the wordpress admin. Once activated, grab the webhook url from Netlify and enter it into the plugin settings page. Next you can grab the status image url and link url to drop into the settings which will provide the netlify status banner in the WordPress dashboard. 18 | 19 | ## Screenshots 20 | 21 |

22 | Settings page in WordPress admin 23 |

24 |

25 | Dashboard with Netlify status 26 |

27 | 28 | ## Contributors 29 | 30 | @iamtimsmith 31 | @mvaneijgen -------------------------------------------------------------------------------- /css/wp-trigger-netlify-build.css: -------------------------------------------------------------------------------- 1 | .toplevel_page_wp-trigger-netlify-build form { 2 | background: white; 3 | padding: 20px; 4 | margin: 0 20px 0 0; 5 | } 6 | .toplevel_page_wp-trigger-netlify-build .notice { 7 | margin: 20px 20px 20px 0; 8 | } 9 | -------------------------------------------------------------------------------- /images/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamtimsmith/wp-trigger-netlify-build/d372d64c25dba56cc1ab177213e11305aab1458e/images/banner.png -------------------------------------------------------------------------------- /images/iamtimsmith.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamtimsmith/wp-trigger-netlify-build/d372d64c25dba56cc1ab177213e11305aab1458e/images/iamtimsmith.png -------------------------------------------------------------------------------- /images/logomark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamtimsmith/wp-trigger-netlify-build/d372d64c25dba56cc1ab177213e11305aab1458e/images/logomark.png -------------------------------------------------------------------------------- /images/mvaneijgen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamtimsmith/wp-trigger-netlify-build/d372d64c25dba56cc1ab177213e11305aab1458e/images/mvaneijgen.png -------------------------------------------------------------------------------- /images/screenshot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamtimsmith/wp-trigger-netlify-build/d372d64c25dba56cc1ab177213e11305aab1458e/images/screenshot1.png -------------------------------------------------------------------------------- /images/screenshot2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamtimsmith/wp-trigger-netlify-build/d372d64c25dba56cc1ab177213e11305aab1458e/images/screenshot2.png -------------------------------------------------------------------------------- /js/wp-trigger-netlify-build.js: -------------------------------------------------------------------------------- 1 | jQuery(document).ready( 2 | (function ($) { 3 | // event handler for clicking the link button 4 | $("#publish, #original_publish, .row-actions .trash, #delete-action").on("click", function (e) { 5 | $.ajax({ 6 | type: "POST", 7 | url: wpTriggerNetlifyBuildVars, 8 | success: function (d) { 9 | console.log(d); 10 | } 11 | }); 12 | }); 13 | })(jQuery) 14 | ); 15 | -------------------------------------------------------------------------------- /wp-trigger-netlify-build.php: -------------------------------------------------------------------------------- 1 | 61 | ' class="regular-text"> 62 |
63 | 71 | ' class="regular-text"> 72 |
73 | 81 | ' class="regular-text"> 82 |
83 | 88 |

Netlify Settings

89 |

Set up your plugin to work with your Netlify webhooks.

90 |
91 | 96 |
97 | 102 | 103 |
104 |

105 |
106 | 107 | '; 141 | $markup .= 'Netlify Status'; 142 | $markup .= ''; 143 | $markup .= '

Trigger a Netlify build manually

'; 144 | $markup .= '
'; 145 | $markup .= ''; 146 | $markup .= ''; 156 | echo $markup; 157 | }else{ 158 | echo "

Please update Netlify settings

"; 159 | } 160 | } 161 | 162 | /** 163 | * Provide Netlify Icon 164 | */ 165 | function netlify_icon() { 166 | return 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCI+ICA8cGF0aCBmaWxsPSIjRkZGIiBkPSJNMjguNTg5IDE0LjEzNWwtLjAxNC0uMDA2Yy0uMDA4LS4wMDMtLjAxNi0uMDA2LS4wMjMtLjAxM2EuMTEuMTEgMCAwIDEtLjAyOC0uMDkzbC43NzMtNC43MjYgMy42MjUgMy42MjYtMy43NyAxLjYwNGEuMDgzLjA4MyAwIDAgMS0uMDMzLjAwNmgtLjAxNWMtLjAwNS0uMDAzLS4wMS0uMDA3LS4wMi0uMDE3YTEuNzE2IDEuNzE2IDAgMCAwLS40OTUtLjM4MXptNS4yNTgtLjI4OGwzLjg3NiAzLjg3NmMuODA1LjgwNiAxLjIwOCAxLjIwOCAxLjM1NSAxLjY3NC4wMjIuMDY5LjA0LjEzOC4wNTQuMjA5bC05LjI2My0zLjkyM2EuNzI4LjcyOCAwIDAgMC0uMDE1LS4wMDZjLS4wMzctLjAxNS0uMDgtLjAzMi0uMDgtLjA3IDAtLjAzOC4wNDQtLjA1Ni4wODEtLjA3MWwuMDEyLS4wMDUgMy45OC0xLjY4NHptNS4xMjcgNy4wMDNjLS4yLjM3Ni0uNTkuNzY2LTEuMjUgMS40MjdsLTQuMzcgNC4zNjktNS42NTItMS4xNzctLjAzLS4wMDZjLS4wNS0uMDA4LS4xMDMtLjAxNy0uMTAzLS4wNjJhMS43MDYgMS43MDYgMCAwIDAtLjY1NS0xLjE5M2MtLjAyMy0uMDIzLS4wMTctLjA1OS0uMDEtLjA5MiAwLS4wMDUgMC0uMDEuMDAyLS4wMTRsMS4wNjMtNi41MjYuMDA0LS4wMjJjLjAwNi0uMDUuMDE1LS4xMDguMDYtLjEwOGExLjczIDEuNzMgMCAwIDAgMS4xNi0uNjY1Yy4wMDktLjAxLjAxNS0uMDIxLjAyNy0uMDI3LjAzMi0uMDE1LjA3IDAgLjEwMy4wMTRsOS42NSA0LjA4MnptLTYuNjI1IDYuODAxbC03LjE4NiA3LjE4NiAxLjIzLTcuNTYuMDAyLS4wMWMuMDAxLS4wMS4wMDMtLjAyLjAwNi0uMDI5LjAxLS4wMjQuMDM2LS4wMzQuMDYxLS4wNDRsLjAxMi0uMDA1YTEuODUgMS44NSAwIDAgMCAuNjk1LS41MTdjLjAyNC0uMDI4LjA1My0uMDU1LjA5LS4wNmEuMDkuMDkgMCAwIDEgLjAyOSAwbDUuMDYgMS4wNHptLTguNzA3IDguNzA3bC0uODEuODEtOC45NTUtMTIuOTQyYS40MjQuNDI0IDAgMCAwLS4wMS0uMDE0Yy0uMDE0LS4wMTktLjAyOS0uMDM4LS4wMjYtLjA2LjAwMS0uMDE2LjAxMS0uMDMuMDIyLS4wNDJsLjAxLS4wMTNjLjAyNy0uMDQuMDUtLjA4LjA3NS0uMTIzbC4wMi0uMDM1LjAwMy0uMDAzYy4wMTQtLjAyNC4wMjctLjA0Ny4wNTEtLjA2LjAyMS0uMDEuMDUtLjAwNi4wNzMtLjAwMWw5LjkyMSAyLjA0NmEuMTY0LjE2NCAwIDAgMSAuMDc2LjAzM2MuMDEzLjAxMy4wMTYuMDI3LjAxOS4wNDNhMS43NTcgMS43NTcgMCAwIDAgMS4wMjggMS4xNzVjLjAyOC4wMTQuMDE2LjA0NS4wMDMuMDc4YS4yMzguMjM4IDAgMCAwLS4wMTUuMDQ1Yy0uMTI1Ljc2LTEuMTk3IDcuMjk4LTEuNDg1IDkuMDYzem0tMS42OTIgMS42OTFjLS41OTcuNTkxLS45NDkuOTA0LTEuMzQ3IDEuMDNhMiAyIDAgMCAxLTEuMjA2IDBjLS40NjYtLjE0OC0uODY5LS41NS0xLjY3NC0xLjM1Nkw4LjczIDI4LjczbDIuMzQ5LTMuNjQzYy4wMTEtLjAxOC4wMjItLjAzNC4wNC0uMDQ3LjAyNS0uMDE4LjA2MS0uMDEuMDkxIDBhMi40MzQgMi40MzQgMCAwIDAgMS42MzgtLjA4M2MuMDI3LS4wMS4wNTQtLjAxNy4wNzUuMDAyYS4xOS4xOSAwIDAgMSAuMDI4LjAzMkwyMS45NSAzOC4wNXpNNy44NjMgMjcuODYzTDUuOCAyNS44bDQuMDc0LTEuNzM4YS4wODQuMDg0IDAgMCAxIC4wMzMtLjAwN2MuMDM0IDAgLjA1NC4wMzQuMDcyLjA2NWEyLjkxIDIuOTEgMCAwIDAgLjEzLjE4NGwuMDEzLjAxNmMuMDEyLjAxNy4wMDQuMDM0LS4wMDguMDVsLTIuMjUgMy40OTN6bS0yLjk3Ni0yLjk3NmwtMi42MS0yLjYxYy0uNDQ0LS40NDQtLjc2Ni0uNzY2LS45OS0xLjA0M2w3LjkzNiAxLjY0NmEuODQuODQgMCAwIDAgLjAzLjAwNWMuMDQ5LjAwOC4xMDMuMDE3LjEwMy4wNjMgMCAuMDUtLjA1OS4wNzMtLjEwOS4wOTJsLS4wMjMuMDEtNC4zMzcgMS44Mzd6TS44MzEgMTkuODkyYTIgMiAwIDAgMSAuMDktLjQ5NWMuMTQ4LS40NjYuNTUtLjg2OCAxLjM1Ni0xLjY3NGwzLjM0LTMuMzRhMjE3NS41MjUgMjE3NS41MjUgMCAwIDAgNC42MjYgNi42ODdjLjAyNy4wMzYuMDU3LjA3Ni4wMjYuMTA2LS4xNDYuMTYxLS4yOTIuMzM3LS4zOTUuNTI4YS4xNi4xNiAwIDAgMS0uMDUuMDYyYy0uMDEzLjAwOC0uMDI3LjAwNS0uMDQyLjAwMkg5Ljc4TC44MzEgMTkuODkxem01LjY4LTYuNDAzbDQuNDkxLTQuNDkxYy40MjIuMTg1IDEuOTU4LjgzNCAzLjMzMiAxLjQxNCAxLjA0LjQ0IDEuOTg4Ljg0IDIuMjg2Ljk3LjAzLjAxMi4wNTcuMDI0LjA3LjA1NC4wMDguMDE4LjAwNC4wNDEgMCAuMDZhMi4wMDMgMi4wMDMgMCAwIDAgLjUyMyAxLjgyOGMuMDMuMDMgMCAuMDczLS4wMjYuMTFsLS4wMTQuMDIxLTQuNTYgNy4wNjNjLS4wMTIuMDItLjAyMy4wMzctLjA0My4wNS0uMDI0LjAxNS0uMDU4LjAwOC0uMDg2LjAwMWEyLjI3NCAyLjI3NCAwIDAgMC0uNTQzLS4wNzRjLS4xNjQgMC0uMzQyLjAzLS41MjIuMDYzaC0uMDAxYy0uMDIuMDAzLS4wMzguMDA3LS4wNTQtLjAwNWEuMjEuMjEgMCAwIDEtLjA0NS0uMDUxbC00LjgwOC03LjAxM3ptNS4zOTgtNS4zOThsNS44MTQtNS44MTRjLjgwNS0uODA1IDEuMjA4LTEuMjA4IDEuNjc0LTEuMzU1YTIgMiAwIDAgMSAxLjIwNiAwYy40NjYuMTQ3Ljg2OS41NSAxLjY3NCAxLjM1NWwxLjI2IDEuMjYtNC4xMzUgNi40MDRhLjE1NS4xNTUgMCAwIDEtLjA0MS4wNDhjLS4wMjUuMDE3LS4wNi4wMS0uMDkgMGEyLjA5NyAyLjA5NyAwIDAgMC0xLjkyLjM3Yy0uMDI3LjAyOC0uMDY3LjAxMi0uMTAxLS4wMDMtLjU0LS4yMzUtNC43NC0yLjAxLTUuMzQxLTIuMjY1em0xMi41MDYtMy42NzZsMy44MTggMy44MTgtLjkyIDUuNjk4di4wMTVhLjEzNS4xMzUgMCAwIDEtLjAwOC4wMzhjLS4wMS4wMi0uMDMuMDI0LS4wNS4wM2ExLjgzIDEuODMgMCAwIDAtLjU0OC4yNzMuMTU0LjE1NCAwIDAgMC0uMDIuMDE3Yy0uMDExLjAxMi0uMDIyLjAyMy0uMDQuMDI1YS4xMTQuMTE0IDAgMCAxLS4wNDMtLjAwN2wtNS44MTgtMi40NzItLjAxMS0uMDA1Yy0uMDM3LS4wMTUtLjA4MS0uMDMzLS4wODEtLjA3MWEyLjE5OCAyLjE5OCAwIDAgMC0uMzEtLjkxNWMtLjAyOC0uMDQ2LS4wNTktLjA5NC0uMDM1LS4xNDFsNC4wNjYtNi4zMDN6bS0zLjkzMiA4LjYwNmw1LjQ1NCAyLjMxYy4wMy4wMTQuMDYzLjAyNy4wNzYuMDU4YS4xMDYuMTA2IDAgMCAxIDAgLjA1N2MtLjAxNi4wOC0uMDMuMTcxLS4wMy4yNjN2LjE1M2MwIC4wMzgtLjAzOS4wNTQtLjA3NS4wNjlsLS4wMTEuMDA0Yy0uODY0LjM2OS0xMi4xMyA1LjE3My0xMi4xNDcgNS4xNzMtLjAxNyAwLS4wMzUgMC0uMDUyLS4wMTctLjAzLS4wMyAwLS4wNzIuMDI3LS4xMWEuNzYuNzYgMCAwIDAgLjAxNC0uMDJsNC40ODItNi45NC4wMDgtLjAxMmMuMDI2LS4wNDIuMDU2LS4wODkuMTA0LS4wODlsLjA0NS4wMDdjLjEwMi4wMTQuMTkyLjAyNy4yODMuMDI3LjY4IDAgMS4zMS0uMzMxIDEuNjktLjg5N2EuMTYuMTYgMCAwIDEgLjAzNC0uMDRjLjAyNy0uMDIuMDY3LS4wMS4wOTguMDA0em0tNi4yNDYgOS4xODVsMTIuMjgtNS4yMzdzLjAxOCAwIC4wMzUuMDE3Yy4wNjcuMDY3LjEyNC4xMTIuMTc5LjE1NGwuMDI3LjAxN2MuMDI1LjAxNC4wNS4wMy4wNTIuMDU2IDAgLjAxIDAgLjAxNi0uMDAyLjAyNUwyNS43NTYgMjMuN2wtLjAwNC4wMjZjLS4wMDcuMDUtLjAxNC4xMDctLjA2MS4xMDdhMS43MjkgMS43MjkgMCAwIDAtMS4zNzMuODQ3bC0uMDA1LjAwOGMtLjAxNC4wMjMtLjAyNy4wNDUtLjA1LjA1Ny0uMDIxLjAxLS4wNDguMDA2LS4wNy4wMDFsLTkuNzkzLTIuMDJjLS4wMS0uMDAyLS4xNTItLjUxOS0uMTYzLS41MnoiLz48L3N2Zz4='; 167 | } 168 | 169 | function wp_trigger_netlify_build_admin_bar_status($admin_bar) 170 | { 171 | $options = get_option('wp_trigger_netlify_build_settings'); 172 | if($options){ 173 | $netlifyStatus = 'Netlify Status'; 174 | 175 | $admin_bar->add_menu(array( 176 | 'id' => 'netlifyStatus', 177 | 'title' => $netlifyStatus, 178 | 'href' => $options['wp_trigger_netlify_build_status_link'], 179 | 'meta' => array( 180 | 'title' => __('Netlify status'), 181 | ), 182 | )); 183 | } 184 | } 185 | add_action('admin_bar_menu', 'wp_trigger_netlify_build_admin_bar_status', 10); 186 | --------------------------------------------------------------------------------