Automattic / studio

Studio by WordPress.com, a free desktop app that helps developers streamline their local WordPress development workflow.
https://developer.wordpress.com/studio/
GNU General Public License v2.0
160 stars 16 forks source link

Feature Request: Sync Creator with Local Build #62

Open SiR-DanieL opened 4 months ago

SiR-DanieL commented 4 months ago

What

It would be cool if we could sync a WordPress.com plugin-enabled site to Studio so we can build locally, and then sync online with the live site.

Why

It extends the power of the Staging feature and allows devs/agencies to safely make changes to their sites, locally.

How

No response

LauDijksterhuis commented 1 month ago

Yes, this would be a really great feature! (Maybe even the most important one) I wanted to submit a new request and then found this one, so let me elaborate and share some of my ideas on how this might be possible to implement.

Why this feature matters

For me personally I always create a copy / staging website before editing the website of my client to make sure any breaking changes don't effect the live website. Therefor I really like the idea of editing locally. Not just for breaking changes, but there are some others reasons too, like:

Before moving to the Automattic for Agencies programme (I recently signed up), I have tested over 12 hosting providers/solutions to bring the best possible experience to my customers. But maybe more importantly also the best experience for me personally, since I am the one who maintains the website and the one who is responsible for the results of these websites.

As a result of this search I found localwp which seems like a great product, but sadly it only works with the specified hosting-providers to sync with the live website. Now that I am part of the Automattic programme I was happy to see there is an alternative: Studio, but I do miss the feature to sync with live sites... Maybe Automattic can look into the workings of localWP to find some inspiration.

Some ideas on how to implement

Just to clarify, I do have some ideas on things that might work, but I do not have the technical knowledge to actually implement them.

Idea 1:

I noticed that the demo site (ending with: .wp.build) is build on WordPress.com hosting. Which is also where the live websites and the stagingwebsites of WordPress.com websites are stored. Just like the connection between the live and staging websites which can sync the database and files between each other. Maybe it is possible to use the same functionality to sync the database (maybe on button click or on a timer) to pull live data (contactforms, products, posts etc.) from the live site to the local environment. Then when ready: upload the complete package to the live environment (or first via a staging preview) to the live website.

Idea 2:

Personally I think idea 1 is the way to go as synced databases is really important for a lot of reasons. One time I had a project that kept postponing which resulted in a dataloss of the last month when moving the new changes to the live website. However Idea 2 is: Using the build in backup solution from Jetpack to at least move a local custom build website from the laptop/computer into the wp.cloud. I think this should become a priority for automattic anyway since moving to WordPress.com now requires a thirdparty plugin which feels odd... But moving via Jetpack backup directly from the local environment is a great way for publishing new websites. I am not sure if this would work for live websites while keeping the database in sync, but maybe this proposal inspires some engineer who does know how to make this happen.

Hopefully Automattic will invest the time and money into building a Studio for WordPress development which can really be the main application for agencies. (Maybe even integrate the WordPress desktop app)

LauDijksterhuis commented 2 weeks ago

Not sure how WP Engine does it, and I'm sure Automattic know about this tool: https://localwp.com but maybe worth to check out for inspiration on how to implement a syncing feature, so I am just dropping this here for now :)