Exploring the power and benefits of using WordPress plugins, how to build a WordPress plugin in a few simple steps, plus a good solid list of plugin resources.
Dev Ops is hard and can seem like another language. This talk given at WordCamp Belfast hopes to help new developers, project managers and agency owners a chance to improve the WordPress Dev Ops Workflow
WordPress Plugin Development- Rich Media Institute WorkshopBrendan Sera-Shriar
“Plug-ins can extend WordPress to do almost anything you can imagine.” In this workshop we will cover the following areas, Extending WordPress, Customizing WordPress Plug-ins, Tips On Writing WordPress Plug-ins, Writing WordPress Plug-ins, and Essential WordPress Plug-ins. Plus, that isn’t enough, we will build a simple Flash plug-in by the end of the workshop that you can take with you!"
WP REST API - Building a simple Web ApplicationEdmund Chan
Presentation slides for WordCamp Singapore 2019 Contributor's day. Visit https://www.edmundcwm.com/presentations/ to view other presentation resources.
5 Steps to Develop a WordPress Plugin From Scratch.pdfBeePlugin
Whether you want to create a custom plugin for your own website or publish the plugin publicly we will help you learn where and how to begin. We will walk you through all the steps involved in custom WordPress plugin development so that you can start developing and publishing your own custom plugins.
Exploring the power and benefits of using WordPress plugins, how to build a WordPress plugin in a few simple steps, plus a good solid list of plugin resources.
Dev Ops is hard and can seem like another language. This talk given at WordCamp Belfast hopes to help new developers, project managers and agency owners a chance to improve the WordPress Dev Ops Workflow
WordPress Plugin Development- Rich Media Institute WorkshopBrendan Sera-Shriar
“Plug-ins can extend WordPress to do almost anything you can imagine.” In this workshop we will cover the following areas, Extending WordPress, Customizing WordPress Plug-ins, Tips On Writing WordPress Plug-ins, Writing WordPress Plug-ins, and Essential WordPress Plug-ins. Plus, that isn’t enough, we will build a simple Flash plug-in by the end of the workshop that you can take with you!"
WP REST API - Building a simple Web ApplicationEdmund Chan
Presentation slides for WordCamp Singapore 2019 Contributor's day. Visit https://www.edmundcwm.com/presentations/ to view other presentation resources.
5 Steps to Develop a WordPress Plugin From Scratch.pdfBeePlugin
Whether you want to create a custom plugin for your own website or publish the plugin publicly we will help you learn where and how to begin. We will walk you through all the steps involved in custom WordPress plugin development so that you can start developing and publishing your own custom plugins.
Modern Web Application Development Workflow - EclipseCon France 2014Stéphane Bégaudeau
People often consider that creating a web application is done by creating a bunch of HTML, Javascript and CSS files in a text editor, putting them in a folder and uploading them on the web.
Well, things have changed and in this presentation, you will see how the workflow used to deliver web applications has evolved over the past few years and where the Eclipse Foundation's tools stand in this new world!
In this talk, we will start by having a look at all the new development tools that have appeared with the arrival of Node.js and how they are used by the web development community.
With tools like Bower used to manage the dependencies of a project, Grunt and Gulp used for the continuous integration and Yeoman used to kickstart web applications, web developers have dramatically increased their productivity.
After that, we will see what tools like the Eclipse IDE and Orion can offer to web developers in order to build and maintain their applications and finally how they could be improved to provide the features needed by web developers.
The presentation I made during WordCamp Manila 2016
See topics about tools we use for developing sites faster like Underscores, Visual Composer and Pantheon
Presented at WordCamp Montreal 2017
For many WordPress users, even seasoned PHP developers, creating new plugins for WordPress seems like a daunting task. This presentation aims to show attendees how simple creating plugins for WordPress from the ground up can be by looking at the architecture of a WordPress plugin, from the basic concepts of registering actions and filters to more advanced concepts such as the creation of admin pages and registering shortcodes.
How to improve your workflows via SSH gateway. Experts at WP Engine help you learn about how WordPress developers can make their work more efficient using WP-CLI via SSH gateway to improve workflows.
On-demand webinar: https://hs.wpengine.com/webinar-improve-workflows-SSH-gateway
This presentation for Pluginable Laravel CMS is presented by Amarin Boonkirt (Ta), DevOps Engineer at Netway Communication, to introduce Laravel and RVsitebuilder to Thai Developers. Free license is available for Developers, at dev.rvsitebuilder.com.
IF you would like to learn more, please visit www.rvsitebuilder.com
With third party clients connecting to your service you may find that the assumptions or opinions of a typical rails application are not robust enough. We'll run through some key considerations when building an API that will be consumed by a mobile app.
AD113 Speed Up Your Applications w/ Nginx and PageSpeededm00se
My slide deck from my session, AD113: Speed Up Your Applications with Nginx + PageSpeed, at MWLUG 2015 in Atlanta, GA at the Ritz-Carlton.
For more, see:
- https://edm00se.io/self-promotion/mwlug-ad113-success
- https://github.com/edm00se/AD113-Speed-Up-Your-Apps-with-Nginx-and-PageSpeed
Introducing the new high-performance Javascript and Typescript compiler which is written in Rust and the demonstrations at Tiki Co., Ltd. (tiki.vn)
Internal sharing session at Tiki Co., Ltd. on September 8 2022 by Thien Ly
_________________
On September 8, I held a presentation about a Javascript and Typescript compiler for my team at TIKI. It is the SWC - the new high-performance compiler written in Rust with customizable plugin API. This could make some massive enhancements to the DX(development experience) for your team in Node and Browser Products.
Read more about the SWC document here: https://swc.rs
#javascript #share #development #dx #typescript #compiler #slide #rust
Modern Web Application Development Workflow - EclipseCon France 2014Stéphane Bégaudeau
People often consider that creating a web application is done by creating a bunch of HTML, Javascript and CSS files in a text editor, putting them in a folder and uploading them on the web.
Well, things have changed and in this presentation, you will see how the workflow used to deliver web applications has evolved over the past few years and where the Eclipse Foundation's tools stand in this new world!
In this talk, we will start by having a look at all the new development tools that have appeared with the arrival of Node.js and how they are used by the web development community.
With tools like Bower used to manage the dependencies of a project, Grunt and Gulp used for the continuous integration and Yeoman used to kickstart web applications, web developers have dramatically increased their productivity.
After that, we will see what tools like the Eclipse IDE and Orion can offer to web developers in order to build and maintain their applications and finally how they could be improved to provide the features needed by web developers.
The presentation I made during WordCamp Manila 2016
See topics about tools we use for developing sites faster like Underscores, Visual Composer and Pantheon
Presented at WordCamp Montreal 2017
For many WordPress users, even seasoned PHP developers, creating new plugins for WordPress seems like a daunting task. This presentation aims to show attendees how simple creating plugins for WordPress from the ground up can be by looking at the architecture of a WordPress plugin, from the basic concepts of registering actions and filters to more advanced concepts such as the creation of admin pages and registering shortcodes.
How to improve your workflows via SSH gateway. Experts at WP Engine help you learn about how WordPress developers can make their work more efficient using WP-CLI via SSH gateway to improve workflows.
On-demand webinar: https://hs.wpengine.com/webinar-improve-workflows-SSH-gateway
This presentation for Pluginable Laravel CMS is presented by Amarin Boonkirt (Ta), DevOps Engineer at Netway Communication, to introduce Laravel and RVsitebuilder to Thai Developers. Free license is available for Developers, at dev.rvsitebuilder.com.
IF you would like to learn more, please visit www.rvsitebuilder.com
With third party clients connecting to your service you may find that the assumptions or opinions of a typical rails application are not robust enough. We'll run through some key considerations when building an API that will be consumed by a mobile app.
AD113 Speed Up Your Applications w/ Nginx and PageSpeededm00se
My slide deck from my session, AD113: Speed Up Your Applications with Nginx + PageSpeed, at MWLUG 2015 in Atlanta, GA at the Ritz-Carlton.
For more, see:
- https://edm00se.io/self-promotion/mwlug-ad113-success
- https://github.com/edm00se/AD113-Speed-Up-Your-Apps-with-Nginx-and-PageSpeed
Introducing the new high-performance Javascript and Typescript compiler which is written in Rust and the demonstrations at Tiki Co., Ltd. (tiki.vn)
Internal sharing session at Tiki Co., Ltd. on September 8 2022 by Thien Ly
_________________
On September 8, I held a presentation about a Javascript and Typescript compiler for my team at TIKI. It is the SWC - the new high-performance compiler written in Rust with customizable plugin API. This could make some massive enhancements to the DX(development experience) for your team in Node and Browser Products.
Read more about the SWC document here: https://swc.rs
#javascript #share #development #dx #typescript #compiler #slide #rust
We all love open source software and open culture, and of course we all want to contribute to and leverage the power of open source in our work. However when it comes to working in a startup, openness is often sacrificed to give way to work efficiency and business logic. In this talk I will talk about some of my experience(and failures) to be open source, and how our company is trying to be open by default without too much efficiency overhead.
https://hkoscon.org/2020/topics/open-default-trying-run-startup-open-source-culture-mind
Github Action is the CI/CD tool made by Github. Deeply integrated with Github features, it can not only automate deployments, but also Githu.b repository management. In this sharing I will talk about how we use Github action in LikeCoin and some issues we encountered.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
2. The Levels - Agenda
- 故事背景
Background
- 新手村
Why, and how to start your own plugin?
- 打怪
Here comes the users
- 打大佬
Gutenberg, Modern Admin UI, Security
3. Background - About me
Fullstack developer; Game Developer
Tech lead, Liker Land
Be open source!
4. Background - Our plugin and products
LikeCoin:
blockchain for content creators and
publishing
LikerLand:
Writing NFTs and bookstore
Web3Press:
Web3 plugin for WordPress users
5. Introduction - Why make a plugin?
Site owners:
- Enable and disable plugin easily
- Track the actual changes all in one place
- WordPress upgrade doesn’t break your change
Developer:
- Share your code and functionalities
Business:
- Sell your product!
6. Overview - How to make a plugin?
Plugin Handbook - 新手指南
https://developer.wordpress.org/plugins/
- Hooks
- Change the post content on publish “content”
- Add a Google Analyics in your site header “hook_header”
- APIs
- Post your post to https://matters.town as a draft
- Send your url to Internet Archive for snapshot
7. Overview - Code Setup
WordPress runs on:
Basic (oldschool) setup
- PHP - Pages, Logic, where hook happen
- Javascript - Browser interactions, update UI and calls
API
- CSS - Style your UI
Protip: Start with a boiler plate
- wp scaffold plugin
- https://github.com/devinvinson/WordPress-Plugin-Boil
erplate
8. Overview - Code best pratices
https://developer.wordpress.org/plugins/plugin-basics/best-practices/
e.g. WordPress PHP codes are all in one global namespace
If you function has a 公廁名 then it will either overwrite someone else’s stuff,
or get overwritten.
Prefix your functions (likecoin_foo) vs Objects (still has to be unique in class
name)
9. Overview - License
- WordPress is GPLv2
- Infective open source license
- Pick anything GPLv2 compatible, say
GPLv2
- Remember to add file headers!
- https://developer.wordpress.org/plugin
s/plugin-basics/including-a-software-lic
ense/
10. Overview - Done? Ship it!
- GPLv2 compatible
- Code must be human
readable, or come with
source map/source code
- Plugin slug approved by
wordpress.org
- Push version to SVN
- Profit!
You can always view code of
any plugin on wordpress.org
SVN
12. Hey I use PHP 5.2 and your
site breaks
https://github.com/likecoin/likecoin-wordpress/pull/28
13. Hey I use PHP (insert legacy version here)
- WordPress can run on PHP 5.2 - 8.0
- https://make.wordpress.org/core/handboo
k/references/php-compatibility-and-wordp
ress-versions/
- Newer syntax won’t work on sites with
newer PHP
- Dev: Always prefer older syntax
- Define minimum support PHP version in
your plugin
- Site owner: Try to upgrade PHP!
14. Hey can it also be in
Spanish
This one is from discord
15. Hey can it also has a (insert language here) version?
Internationalization problem - i18n
Meet translate.wordpress.org
17. How do I make sure my strings show up?
PHP:
__( 'Hello, dear user!', 'plugin-slug’ );
Javascript:
Legacy: wp_localize_script() and pass string from PHP
Modern: @wordpress/i18n
https://codex.wordpress.org/I18n_for_WordPress_Developers
18. Polyglot team, i.e. You don’t own your i18n!
- Making the plugin does not automatically makes you a approved translator
- Try get approved as PTE for your plugin, per locale basis
https://make.wordpress.org/polyglots/handbook/plugin-theme-authors-guide/pte-re
quest/
19. How You can help
- Help translate WordPress Core
- Help translate any plugin you use/like
20. Q: Hey I use AMP, your
iframe broken
https://github.com/likecoin/likecoin-wordpress/pull/51
21. Hey I use AMP, …
- Many sites enable AMP for SEO
- AMP plugin https://wordpress.org/plugins/amp/
- When AMP is active, not only style get simplified, e.g.
iframe get sandboxed
- In our case, add attribute we need from
https://developer.mozilla.org/en-US/docs/Web/HTML/
Element/iframe#sandbox
- In PHP, test for AMP mode using
is_amp_endpoint() / amp_is_request()
- Always test the AMP version!
22. Hey I want to use
shortcode!
https://github.com/likecoin/likecoin-wordpress/pull/54
23. Hey I want to use shortcode!
What is shortcode?
[likecoin]
In fact easy to support parameter too
[likecoin liker-id=ckxpress]
Turns out it is simple to implement in “content” filter with
add_shortcode()
Hard to document though!
24. Hey your plugin throw JS
error after upgrade!
https://github.com/likecoin/likecoin-wordpress/pull/140
25. Hey your plugin upgrade does not upgrade
- Generally a hard to debug issue
- In this particular case, Javascript was cached
- Most sites has some kind of CDN cache for all js, css files
- Oldschool way
$ver = plugin version in wp_enqueue_script() and wp_enqueue_style()
- Modern way:
@wordpress/script build and index.asset.php
Here are only two hard things in Computer Science: cache invalidation and
naming things
26. Hey your stuff doesn’t show
properly in my theme
https://github.com/likecoin/likecoin-wordpress/pull/88
27. Hey your stuff doesn’t show properly in my theme
- Normally this one is very hard
- All the themes with different DOM and
CSS => can’t fit all
- Turns out just wrapping our iframe in
<figure> does wonder
- This is due to blocks are mostly
wrapped with <p> or <figure>, modern
themes are designed to handle them
properly
31. Gutenberg
- Block based editor
- Full site editing
- Released as default in WordPress 5.0
- Now the old editor is a plugin called
“Classic Editor”
What does that mean for plugin?
- Editor sidebar support
- Block support
34. Editor Sidebar - metabox is now outdated
Metabox in its simplest form, is just extra fields in HTML <form>
- Submit post => Submit fields in metabox => Updates data with post
Sidebar is a complex web app
- On publish, Gutenberg does a XHR instead of refresh
- Your sidebar is expected to listen to events and does XHR too
- Maybe also multitab JavaScript based navigation, like a full blown SPA
- In fact it is a React SPA!
35. Blocks - shortcode is now outdated
Remember shortcode [likecoin liker-id=ckxpress]?
How about a UI to list all shortcodes, configure their parameters, and maybe also
a preview?
36. Blocks - shortcode is now outdated
- Add your own blocks for site
- block.json defines all the metadata
- edit.js and save.js defines different behaviour, in
editor vs in actual post view
- Make variants for blocks that has common attributes
https://developer.wordpress.org/block-editor/
38. - PHP renders HTML
- PHP GET => Fill data with HTML
- What about JavaScript? Write another AJAX API in PHP
- Write AJAX API => Need to check admin yourself
- So two set of codes for same thing
PHP: data are written directly into HTML (We call that SSR nowadays)
Javascript + AJAX API: data are fetched with XHR and updated by
JavaScript (Hydration!)
- This sound suspiciously like “reinventing my own next.js/nuxt.js for every form
input”...
Before @wordpress/data
39. After @wordpress/data
Redux-like syntax abstract all the API calls and authentication behind a selector
const isCurrentPostPublished = select('core/editor').isCurrentPostPublished()
const postDate = select('core/editor').getEditedPostAttribute('modified_gmt')
Cool!
But… in no where are the available data fields clearly documented!
41. Why a plugin breach affect the whole site?
- WordPress code runs in a global space
- No effective isolation between plugins, or actually, everything
- Horrible in security sense
i.e.
You can write a plugin to change any user/admin data
You can write a plugin to change data used by other plugin
- Actually thats how plugin for plugins work
e.g. woocommence, woocommence plugins, woocommence plugins pro
version, which is a paid plugin for woocommence plugin
42. How can plugin developer prevent this?
- Sanitize all input and output
Why both? Don’t trust any data to be safe
sanitize_*, esacpe_*
洗手洗手洗手
- Use WordPress provided function instead of PHP or writing
your own
wp_remote_get()
- Wordpress coding standard linter warns all unsantized output
https://developer.wordpress.org/plugins/security/
43. How can site owner prevent this?
Disable unneeded plugin
- Disabling plugin disable many of its hook and API, reducing attack surfaces
Uninstall unneeded plugin
- Plugin can hook on install, uninstall and upgrade
Try to understand what data and option are created by your plugin, and does it
clean them up after uninstall?
- WordPress does not record these on install, devs can be lazy or don’t even
know they should clean up data
44. There’s more…
Like 200 more things about
- Really silly APIs
- Subtle non-documented functions
- Stupid mistakes we made (mostly this)
… that I can talk about, but let’s not dig too
deep into this here.
45. Hey it’s Q&A
Now it’s your chance to contribute content to this slide!