Best way to implement mechanism which "syncs" content to Wordpress site
Hi All,
Just looking for a bit of advice on how to approach a particular problem.
We have an Umbraco news/magazine site and several Wordpress sites which sell our commercial services/offerings. We'd like to "sync" the news items uploaded to the main Umbraco site to the Wordpress ones.
News stories get uploaded once a week and are rarely updated.
My initial though was to do this with an RSS feed, however it seems that a better approach may be to save each news item to the Wordpress posts database using a weekly cron job. The Wordpress part I can do, but how to handle the Umbraco bit? Or... any other ideas? I see there's a REST-API, but I'm not sure how I could use this with PHP.
Thanks!
(Disclaimer: I'm a Wordpress/PHP dev and know just enough Umbraco/C# to be dangerous).
Can you recommend a tutorial on how to create an API controller? I Googled and couldn't find anything useful... (simpler is better).
Using this as a basis, I created a file called ProductsController.cs in App_Code and pasted in the following:
public class ProductsController : UmbracoApiController
{
public IEnumerable<string> GetAllProducts()
{
return new[] { "Table", "Chair", "Desk", "Computer", "Beer fridge" };
}
}
However, I get an CS0246: The type or namespace name 'UmbracoApiController' could not be found error when visiting the site. I guess I need to include some dependencies, but what? Declaring inherit/using Umbraco.Web.WebApi.UmbracoApiController also generates an error.
Add please one more using to the top of the .cs file:
using Umbraco.Web.WebApi;
A tutorial on how to create an API controller - it's hard question because it's so flexible and you need just use basic Umbraco knowledge for generating output.
If your strength lies in the WordPress and php side of things, I would probably say an option would be the RSS feed or an alternative templates approach as opposed to creating an API.
Option 1
You could then use your WordPress site to call your feed and then download a "content only" view or a partial view for saving into your WordPress site(s).
Lets say for example you have a "News page", this could have an alternate template that is just an XML list of all the news articles with the last updated date and their guid (so you have a unique reference just in case something changes).
You could grab this using a php curl script in a Chron job, then iterate around the results and pull out the url for each news article. If any are new or have changed you can then call them and retrieve the copy.
Option 2
Another alternative is to have the Umbraco site push the updates to the WordPress sites by creating an end point on those sites then use the Publish event in Umbraco to send the updated copy.
Option 2 was kind of what I was thinking - in Wordpress I'd just hook into the the save_post action and run a function to push the content to the other website - is there an Umbraco equivalent?
Option 1 is certainly the "easier" way, but wouldn't expand my understanding of Umbraco...
If you are editing the site using Visual Studio it will make things much easier to create these modifications as you'll get helpful IntelliSense on using statements and other bits.
Let us know if you need more of a hand or examples with it but that link should start you on the right path :-)
Best way to implement mechanism which "syncs" content to Wordpress site
Hi All,
Just looking for a bit of advice on how to approach a particular problem.
We have an Umbraco news/magazine site and several Wordpress sites which sell our commercial services/offerings. We'd like to "sync" the news items uploaded to the main Umbraco site to the Wordpress ones.
News stories get uploaded once a week and are rarely updated.
My initial though was to do this with an RSS feed, however it seems that a better approach may be to save each news item to the Wordpress posts database using a weekly cron job. The Wordpress part I can do, but how to handle the Umbraco bit? Or... any other ideas? I see there's a REST-API, but I'm not sure how I could use this with PHP.
Thanks!
(Disclaimer: I'm a Wordpress/PHP dev and know just enough Umbraco/C# to be dangerous).
Hi James
The best way to do it will be creating API methods in Umbraco solution and then use it in WordPress sites.
Read more about API controllers in Umbraco, it's pretty easy to create:
https://our.umbraco.org/documentation/reference/routing/webapi/
Thanks,
Alex
Thanks Alex,
Can you recommend a tutorial on how to create an API controller? I Googled and couldn't find anything useful... (simpler is better).
Using this as a basis, I created a file called
ProductsController.cs
inApp_Code
and pasted in the following:However, I get an
CS0246: The type or namespace name 'UmbracoApiController' could not be found
error when visiting the site. I guess I need to include some dependencies, but what? Declaringinherit/using Umbraco.Web.WebApi.UmbracoApiController
also generates an error.Hi James
Add please one more using to the top of the .cs file:
A tutorial on how to create an API controller - it's hard question because it's so flexible and you need just use basic Umbraco knowledge for generating output.
Are you using Visual Studio?
Thanks,
Alex
Hi James,
If your strength lies in the WordPress and php side of things, I would probably say an option would be the RSS feed or an alternative templates approach as opposed to creating an API.
Option 1 You could then use your WordPress site to call your feed and then download a "content only" view or a partial view for saving into your WordPress site(s).
Lets say for example you have a "News page", this could have an alternate template that is just an XML list of all the news articles with the last updated date and their guid (so you have a unique reference just in case something changes).
You could grab this using a php curl script in a Chron job, then iterate around the results and pull out the url for each news article. If any are new or have changed you can then call them and retrieve the copy.
Option 2 Another alternative is to have the Umbraco site push the updates to the WordPress sites by creating an end point on those sites then use the Publish event in Umbraco to send the updated copy.
Thanks, Nik.
Option 2 was kind of what I was thinking - in Wordpress I'd just hook into the the save_post action and run a function to push the content to the other website - is there an Umbraco equivalent?
Option 1 is certainly the "easier" way, but wouldn't expand my understanding of Umbraco...
Hi James,
There is indeed a version of that in Umbraco.
This link gives you a bit of an example. https://our.umbraco.org/documentation/getting-started/Code/Subscribing-To-Events/
If you are editing the site using Visual Studio it will make things much easier to create these modifications as you'll get helpful IntelliSense on using statements and other bits.
Let us know if you need more of a hand or examples with it but that link should start you on the right path :-)
is working on a reply...