Headless CMS: Wordpress Rest-API – Add links to existing posts/pages - wordpress

We want to use the Wordpress Rest-API to build a page decoupled from the backend. A few things still bother us though:
Within the wordpress backend one can add links in the content editor of a page or a post and one gets normally a list of all existing pages and posts of the same page to link to them. By decoupling the backend it does not know the exact urls to other pages and we need to provide this. Is there a possibility to tell wordpress what links are available?
Thanks in advance.
Cheers

For those looking for the answer:
There are two URL settings under Settings > General.
WordPress Address (URL) should be the URL for your api site. Like api.whatever.com.
Site Address (URL) should be the URL for the frontend. Like www.whatever.com.
This allows the internal linking to work properly in the Editor while keeping the backend site on a separate URL from a headless frontend.

I'm not sure what you're trying to ask. The WordPress REST API just provides a way to access posts, etc. from somewhere else part from the web site side (e.g. themes, etc). Pages would still be accessible from the admin backend and the JSON/REST API: https://developer.wordpress.org/rest-api/reference/pages/

Specifically with WordPress you could ensure that you're not rewriting the permalinks. That way they are all still site.com/?p=post-id
That way it's easy to parse fetch the new pages. Then replace the hrefs with whatever your frontend needs.
You could use the ID to fetch the slug of the new post immediately.
Or you could even keep a mapping in your presentation layer of IDs to your own slugs.

Changing the site_url doesn't work for me.
Since I also have a wordpress theme with custom rest controllers
Plus the wp-json breaks if I change the site url
My backend is hosted at digital ocean app
My frontend is hosted at vercel
I fixed it by using a wordpress plugin called make-paths-relative
But since my backend doesnt know where my frontend is I added one change within the plugin at:
frontend/class-make-paths-relative.php line 123
I added a constant FRONTEND_URL which i define in the wp-config
$relative_link = FRONTEND_URL.$link;
This changes both the permalink within my backend of a post, page or cpt
And changes internal links as wel, links within the content editor
I made a request to the plugin author as well

Related

Redirection page for all my external links in wordpress

I have a wordpress affiliate website. I need a build a middle page for all my external links. I'm using 'redirection' plugin for the redirections. To better understanding, in a new tab that page must be show up for 2 seconds then the external link will open.
Page>Redirection page(2 sec)>external page
I tried to handle it with plugins but js is what i need it
according to your case, In my opinion, the fastest way to achieve this goal is to use a plugin.
Using the Mihdan plugin: No External Links
To redirect to a specific page in WordPress or similar plugins.
https://wordpress.org/plugins/mihdan-no-external-links/

I'm trying to implement external REST APIs in my wordpress website. Can anybody have idea how to do it (whether with a plugin or with programming)

I tried to use one plugin called "WP Data Sync". I am also going through its documentation/ support for the same. I am also having wpbakery page builder in my website. So is there any way that we sync with that also?
Note - We have to sync data in the form of images, image gallery, events listing, and the blog posts.
Did you check out WP Data Syncs website at https://wpdatasync.com/ and create an account to check out an API key?
I'm not sure about all APIs, but the ones I've used in the past would require me to register with the API's website, get issued an API key and maybe even designate the key to a specific website (your WordPress site in this case) for security reasons. After that, you would then go to your WP site and setup the API there via WP DataSyncs plugin.
I hope I understood your question and that this helps.

Get recent wordpress posts in Laravel

I have a Wordpress site and a Laravel site and I want to display recent wordpress posts in the footer of Laravel site. How can I do this without having my wordpress database information in my config/database.php file and using it in the models? Can I get them using RSS?
Recent WordPress was released with a huge thing called REST API – earlier it was possible only with external plugins. So now we can query WordPress database from external projects. Including Laravel.
set up a local WordPress website, and after installation you got that usual dashboard.
we can already make API calls after installation. No need to configure anything, we just launch the URL in the browser:
we’ve received a JSON with a list of posts – by default, WordPress creates one dummy post.
Basically, URL structure for the API calls is simple:
/wp-json/wp/v2/[endpoint]?[parameters]
Yes, you’ve read it right, we can get posts, categories, tags and other things that are publicly available, so we don’t need any authentication here.
And we also can filter the data with GET parameters, like this:
/wp-json/wp/v2/posts?per_page=2&orderby=title
For more details open link:- Using WordPress REST API in Laravel
You can get the posts by calling an API endpoint:
yoursiteurl/wp-json/wp/v2/posts
It will return all the posts in a json format. You can also see the reference from here.

Mixing Wordpress eCommerce site with external login based Vue Frontend Best Practices

I am new to web development and and would like advice about what is the usual best practices to achieve what I am trying to do.
I am in charge of writing a frontend app using Vue. This frontend will require a login to access the app. The app will be hosted on Amazon.
However we are also wanting to build an eCommerce site in Wordpress or equivalent that sits on the root of the website, (eg www.mywebsite.com) with the app accessible through a "sign in" button. If the user presses the sign in button we want the location bar location to not change from the website they are on (www.mywebsite.com), even though the Wordpress site and Vue frontend may be stored on different locations/domains.
If the site is made in Wordpress, we can get another developer to do that webpage for us, while I work on the frontend. However we want the experience to be relatively seamless between connecting to the wordpress root site, clicking on the sign in button and being taken to the Vue frontend.
Is this possible? Do both sites have to be hosted on the same server for it to work (eg an Amazon EC2 server which hosts two webpages, the wordpress one and the vue one)?
Or can the wordpress put a link to the Vue frontend which doesn't change the web location to the user?
Or (worst case scenario) do we need to make both webpages in Vue as one Vue application, some pages requiring login to access and others not?
Thanks kindly for any assistance.
So in order to use Vue and WordPress together, you can either write 2 separate applications. One for the Frontend and one for the Backend, which is perfectly fine or you can simply write a WordPress Application with a Vue Theme.
This is how this could look like:
WordPress Backend
You can use a normal WordPress backend, where you can build the architecture you want to. In addition, you need to set up the REST-API Wordpress provides. So this also means, just use plugins which support it. Otherwise, you would need to write custom endpoints. For example, Woocommerce would be a good e-commerce plugin, since it supports the API.
Learn more about it here: https://v2.wp-api.org/
Of course, you can host your WordPress installation on Amazon. Here is a good guide for that: https://aws.amazon.com/de/getting-started/tutorials/launch-a-wordpress-website/
Notice: The REST-API is available in core since 4.7. If you are using an older version you would need to install a plugin.
WordPress Frontend
In order to create your Frontend, I'd recommend you to make a custom theme. Since you are just serving static files this can be done pretty easy. But still, you don't need to reinvent the wheel.
There's a really good starter theme out there: https://github.com/EvanAgee/vuejs-wordpress-theme-starter
It comes with all the stuff you need to get started and since it is just a theme, you can simply set up a usual WordPress hosting without handling Domains of multiple applications.
In order to get the data from the Backend, you would simply make calls to the REST-API. Here's an example: https://github.com/EvanAgee/vuejs-wordpress-theme-starter/blob/master/src/api/index.js

How to use wordpress to make a commerical/non blog website

I have managed to setup a blog on localhost quickly using wordpress. But what is ivolved in setting up a commercial website that is not a blog?
Also, should learning to use wordpress be more diffcult than learning Asp.Net or php? I can use these languages to create a website more quickly than using wordpress it seems. I'm guessing it should be possible to create a basic php website and then somehow hook it up to the admin functionality of wordpress to publish content and update it?
Any comments and suggestions will be appreciated.
Thanks,
A few thoughts on this.
First, Wordpress is based on PHP. So if you know your way around in PHP you are able to change anything within wordpress, you can build customized plugins, templates, etc.
However, using Wordpress has nothing to do with the programming languages you know. The fact that you are struggling with it is probably more because you don't understand yet what the features of Wordpress are or what you can use them for.
You can easily use Wordpress to create a simple non-blog website by setting up pages instead of posts. So you would be using Wordpress not as a blog engine but more as what's usually called a content management system CMS (not that using it as a blog engine wouldn't make Wordpress a CMS, but I'm talking about the general usage of those wordings).
A simple Google search might help you find more information about how to accomplish it in your specific case.
Hope this helps!
You need experience with PHP, HTML and CSS to configure WordPress to run like a non-blog website. Is it easier? Maybe, you get what you want but you won't understand what is going on.
If you are creating a static web page, say like a company's web site with little to none dynamic content, use pages (not posts) and create a static front page.
If you wish to use WordPress like a generic CMS, you can either use the Pods plugin or the newly introduced custom post types and taxonomies (new in Wordpress 3.0). You still need knowledge of PHP/MySQL to configure the Wordpress Loop (which is used to display blog posts and other dynamic content) and Wordpress Theme tags (to display name of the current logged in user).
Some plugins help with customizing the site for a non-blog look. Theme My Login and Theme my Profile blends the log-in page and profile page with your theme. However, if you need to customize the appearance, or add new logic, you pretty much need programming.
In short, you would need knowledge of PHP and MySQL; CSS too, if possible. Get your hand dirty building some sites, then what Wordpress offer and does for you with its API will be more relevant.

Resources