Where to include php files in wordpress and how to refer to them later
I am currently creating a customize web page and I am willing to refer to a php file inside an ajax command open(GET,"url php",true)
so my question is where to put my php file so that it would be seen by this snippet and how to call it.
Thanks
php ajax
New contributor
add a comment |
I am currently creating a customize web page and I am willing to refer to a php file inside an ajax command open(GET,"url php",true)
so my question is where to put my php file so that it would be seen by this snippet and how to call it.
Thanks
php ajax
New contributor
2
have you looked at creating a REST API endpoints? You should never ping a PHP file directly in WP as it has security and maintainability consequences
– Tom J Nowell♦
15 hours ago
add a comment |
I am currently creating a customize web page and I am willing to refer to a php file inside an ajax command open(GET,"url php",true)
so my question is where to put my php file so that it would be seen by this snippet and how to call it.
Thanks
php ajax
New contributor
I am currently creating a customize web page and I am willing to refer to a php file inside an ajax command open(GET,"url php",true)
so my question is where to put my php file so that it would be seen by this snippet and how to call it.
Thanks
php ajax
php ajax
New contributor
New contributor
edited 12 hours ago
rudtek
3,69721439
3,69721439
New contributor
asked 16 hours ago
ahmedahmed
111
111
New contributor
New contributor
2
have you looked at creating a REST API endpoints? You should never ping a PHP file directly in WP as it has security and maintainability consequences
– Tom J Nowell♦
15 hours ago
add a comment |
2
have you looked at creating a REST API endpoints? You should never ping a PHP file directly in WP as it has security and maintainability consequences
– Tom J Nowell♦
15 hours ago
2
2
have you looked at creating a REST API endpoints? You should never ping a PHP file directly in WP as it has security and maintainability consequences
– Tom J Nowell♦
15 hours ago
have you looked at creating a REST API endpoints? You should never ping a PHP file directly in WP as it has security and maintainability consequences
– Tom J Nowell♦
15 hours ago
add a comment |
3 Answers
3
active
oldest
votes
You can put your code in a plugin, then create a REST API endpoint.
For example lets create a plugin, just put a PHP file with a comment in it at the top like this:
<?php
/**
* Plugin Name: Ahmeds Plugin
**/
Now you'll see "Ahmeds Plugin" in the plugins folder. You can put WP code in here that will run such as filters, actions, classes, etc. Some people put these things in their themes functions.php
, but themes are for visuals/presentation, and you lose it all when you switch a theme.
Now lets make an endpoint your javascript can make a request to. Start by telling WP you want to create an endpoint:
add_action( 'rest_api_init', function () { // when WP sets up the REST API
register_rest_route( // tell it we want an endpoint
'ahmed/v1', '/test/', // at example.com/wp-json/ahmed/v1/test
[
'methods' => 'GET', // that it handles GET requests
'callback' => 'ahmed_test_endpoint' // and calls this function when hit
]
);
} );
When you visit /wp-json/ahmed/v1/test
it will run the function ahmed_test_endpoint
, so lets create that function:
function ahmed_test_endpoint( $request ) {
return 'Hello World';
}
The REST API will take whatever you return, JSON encode it, and send it out. You can return a WP_Error
object if something goes wrong and it will change the HTTP codes etc and output the message. If you need any of the parameters, use the $request
object, e.g. if you added ?bananas=yummy
to the URL, then $request['bananas']
will contain "yummy"
, just like $_GET
.
Remember to flush/resave your permalinks when you add a new endpoint!
Now when we go to yoursite.com/wp-json/ahmed/v1/test
you'll see "Hello World"
If you like, you can expand register_rest_route
to add more information, such as which parameters your code expects, how to validate them, checking if the user is logged in and has permission to do what they want to do, etc.
If you do this, the REST API will even help you out, so if you tell it there's going to be an ID parameter, but none is given, it'll tell you the ID parameter is missing. Admin AJAX, or stand alone PHP files won't do this, and it makes debugging very difficult. It also greatly improves security
Why Not A Standalone PHP File?
- WP APIs won't be available so you'll need to bootstrap WP manually, which is painful
- The endpoint is available even if your plugin/theme is deactivated which can pose a security issue
- Other plugins can't hook into it, so no benefits from caching or optimisation plugins, so there's a possible performance penalty
- You'll need to roll out all the security checks yourself, building them manually, and that's not easy. WP will do them for you if you use the REST API
In the olden days, the solution was to use the Admin AJAX API, but it doesn't do a lot for you. Also, it's very unforgiving, if you don't match your AJAX actions correctly, you get a cryptic response. It also does no checking beyond logged in/out, no validation or sanitisation, and no discovery mechanisms
i didnt get where to put this empty php file should i create this "ahmeds plugin" folder in plugins
– ahmed
15 hours ago
A plugin is just a PHP file in the plugins folder with a comment at the top, in a very literal sense. A good example is thehello-dolly.php
file that comes with every WP install. You could put it in a subfolder if you really want to, but it's not necessary, notice I made no mention of creating folders in my answer, there were no missing steps to fill in, create a PHP file in the plugins folder, put a comment at the top, and save, that's all the steps
– Tom J Nowell♦
15 hours ago
where to put the add action script?
– ahmed
15 hours ago
add a comment |
If you want to do some AJAX in your theme and you're asking where to put the PHP file that will process such request, then... Nowhere is the real answer...
In WordPress you should deal with AJAX a little bit different than in normal PHP apps. There is already a mechanism for such requests.
So first, you should localize your JS script:
wp_localize_script( 'ajax-script', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) );
Then you should use that variable as request address:
// it's important to send "action" in that request - this way WP will know which action should be processing this request
jQuery.get(ajax_object.ajax_url, {'action': 'my_action', ...}, ... );
And then you should register your callbacks that will process the request:
add_action( 'wp_ajax_my_action', 'my_action' ); // for logged in users
add_action( 'wp_ajax_nopriv_my_action', 'my_action' ); // for anonymous users
function my_action() {
...
}
You can read more on that topic here:
- https://codex.wordpress.org/AJAX_in_Plugins
1
Nice, but a REST API endpoint would have been better, and easier to debug and work with
– Tom J Nowell♦
15 hours ago
@TomJNowell it depends on what he wants to do (and it's a little bit hard to guess based on the description in question)...
– Krzysiek Dróżdż
15 hours ago
I can't see a case where the admin ajax API can be used but the REST API can't, the REST API is superior in every conceivable way and does everything Admin AJAX does ( but better )
– Tom J Nowell♦
15 hours ago
Well, there are a lot of such cases - for example every time when a JS library needs to get HTML or some other format and not a JSON - for instance there are JS search suggestions plugins that do so... They're two available mechanisms and it's very opinion-based... I wouldn't say any of these is superior. If you prefer REST - go for it.
– Krzysiek Dróżdż
15 hours ago
add a comment |
You should be able to use the functions defined in your PHP files by including it into your functions.php
file. It's kinda hard to advice you better without knowing more about your structure. But functions.php
seems to be a good location to require your file IMHO.
New contributor
1
Hmm, I'm not sure if he wants to include PHP files or he's asking, where should he put a PHP file that will process AJAX calls.
– Krzysiek Dróżdż
15 hours ago
@Krzysiek Dróżdż what i need is how to add a php file that i can refer to from another code like when you program with html you put php tag and the link to a php file thats what i want in to do wordpress
– ahmed
15 hours ago
@Ahmed, do you mean something like phpinclude()
andrequire()
? If yes, the WordPress equivalent would be to useget_template_part()
– jsmod
5 hours ago
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "110"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
ahmed is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fwordpress.stackexchange.com%2fquestions%2f333343%2fwhere-to-include-php-files-in-wordpress-and-how-to-refer-to-them-later%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
You can put your code in a plugin, then create a REST API endpoint.
For example lets create a plugin, just put a PHP file with a comment in it at the top like this:
<?php
/**
* Plugin Name: Ahmeds Plugin
**/
Now you'll see "Ahmeds Plugin" in the plugins folder. You can put WP code in here that will run such as filters, actions, classes, etc. Some people put these things in their themes functions.php
, but themes are for visuals/presentation, and you lose it all when you switch a theme.
Now lets make an endpoint your javascript can make a request to. Start by telling WP you want to create an endpoint:
add_action( 'rest_api_init', function () { // when WP sets up the REST API
register_rest_route( // tell it we want an endpoint
'ahmed/v1', '/test/', // at example.com/wp-json/ahmed/v1/test
[
'methods' => 'GET', // that it handles GET requests
'callback' => 'ahmed_test_endpoint' // and calls this function when hit
]
);
} );
When you visit /wp-json/ahmed/v1/test
it will run the function ahmed_test_endpoint
, so lets create that function:
function ahmed_test_endpoint( $request ) {
return 'Hello World';
}
The REST API will take whatever you return, JSON encode it, and send it out. You can return a WP_Error
object if something goes wrong and it will change the HTTP codes etc and output the message. If you need any of the parameters, use the $request
object, e.g. if you added ?bananas=yummy
to the URL, then $request['bananas']
will contain "yummy"
, just like $_GET
.
Remember to flush/resave your permalinks when you add a new endpoint!
Now when we go to yoursite.com/wp-json/ahmed/v1/test
you'll see "Hello World"
If you like, you can expand register_rest_route
to add more information, such as which parameters your code expects, how to validate them, checking if the user is logged in and has permission to do what they want to do, etc.
If you do this, the REST API will even help you out, so if you tell it there's going to be an ID parameter, but none is given, it'll tell you the ID parameter is missing. Admin AJAX, or stand alone PHP files won't do this, and it makes debugging very difficult. It also greatly improves security
Why Not A Standalone PHP File?
- WP APIs won't be available so you'll need to bootstrap WP manually, which is painful
- The endpoint is available even if your plugin/theme is deactivated which can pose a security issue
- Other plugins can't hook into it, so no benefits from caching or optimisation plugins, so there's a possible performance penalty
- You'll need to roll out all the security checks yourself, building them manually, and that's not easy. WP will do them for you if you use the REST API
In the olden days, the solution was to use the Admin AJAX API, but it doesn't do a lot for you. Also, it's very unforgiving, if you don't match your AJAX actions correctly, you get a cryptic response. It also does no checking beyond logged in/out, no validation or sanitisation, and no discovery mechanisms
i didnt get where to put this empty php file should i create this "ahmeds plugin" folder in plugins
– ahmed
15 hours ago
A plugin is just a PHP file in the plugins folder with a comment at the top, in a very literal sense. A good example is thehello-dolly.php
file that comes with every WP install. You could put it in a subfolder if you really want to, but it's not necessary, notice I made no mention of creating folders in my answer, there were no missing steps to fill in, create a PHP file in the plugins folder, put a comment at the top, and save, that's all the steps
– Tom J Nowell♦
15 hours ago
where to put the add action script?
– ahmed
15 hours ago
add a comment |
You can put your code in a plugin, then create a REST API endpoint.
For example lets create a plugin, just put a PHP file with a comment in it at the top like this:
<?php
/**
* Plugin Name: Ahmeds Plugin
**/
Now you'll see "Ahmeds Plugin" in the plugins folder. You can put WP code in here that will run such as filters, actions, classes, etc. Some people put these things in their themes functions.php
, but themes are for visuals/presentation, and you lose it all when you switch a theme.
Now lets make an endpoint your javascript can make a request to. Start by telling WP you want to create an endpoint:
add_action( 'rest_api_init', function () { // when WP sets up the REST API
register_rest_route( // tell it we want an endpoint
'ahmed/v1', '/test/', // at example.com/wp-json/ahmed/v1/test
[
'methods' => 'GET', // that it handles GET requests
'callback' => 'ahmed_test_endpoint' // and calls this function when hit
]
);
} );
When you visit /wp-json/ahmed/v1/test
it will run the function ahmed_test_endpoint
, so lets create that function:
function ahmed_test_endpoint( $request ) {
return 'Hello World';
}
The REST API will take whatever you return, JSON encode it, and send it out. You can return a WP_Error
object if something goes wrong and it will change the HTTP codes etc and output the message. If you need any of the parameters, use the $request
object, e.g. if you added ?bananas=yummy
to the URL, then $request['bananas']
will contain "yummy"
, just like $_GET
.
Remember to flush/resave your permalinks when you add a new endpoint!
Now when we go to yoursite.com/wp-json/ahmed/v1/test
you'll see "Hello World"
If you like, you can expand register_rest_route
to add more information, such as which parameters your code expects, how to validate them, checking if the user is logged in and has permission to do what they want to do, etc.
If you do this, the REST API will even help you out, so if you tell it there's going to be an ID parameter, but none is given, it'll tell you the ID parameter is missing. Admin AJAX, or stand alone PHP files won't do this, and it makes debugging very difficult. It also greatly improves security
Why Not A Standalone PHP File?
- WP APIs won't be available so you'll need to bootstrap WP manually, which is painful
- The endpoint is available even if your plugin/theme is deactivated which can pose a security issue
- Other plugins can't hook into it, so no benefits from caching or optimisation plugins, so there's a possible performance penalty
- You'll need to roll out all the security checks yourself, building them manually, and that's not easy. WP will do them for you if you use the REST API
In the olden days, the solution was to use the Admin AJAX API, but it doesn't do a lot for you. Also, it's very unforgiving, if you don't match your AJAX actions correctly, you get a cryptic response. It also does no checking beyond logged in/out, no validation or sanitisation, and no discovery mechanisms
i didnt get where to put this empty php file should i create this "ahmeds plugin" folder in plugins
– ahmed
15 hours ago
A plugin is just a PHP file in the plugins folder with a comment at the top, in a very literal sense. A good example is thehello-dolly.php
file that comes with every WP install. You could put it in a subfolder if you really want to, but it's not necessary, notice I made no mention of creating folders in my answer, there were no missing steps to fill in, create a PHP file in the plugins folder, put a comment at the top, and save, that's all the steps
– Tom J Nowell♦
15 hours ago
where to put the add action script?
– ahmed
15 hours ago
add a comment |
You can put your code in a plugin, then create a REST API endpoint.
For example lets create a plugin, just put a PHP file with a comment in it at the top like this:
<?php
/**
* Plugin Name: Ahmeds Plugin
**/
Now you'll see "Ahmeds Plugin" in the plugins folder. You can put WP code in here that will run such as filters, actions, classes, etc. Some people put these things in their themes functions.php
, but themes are for visuals/presentation, and you lose it all when you switch a theme.
Now lets make an endpoint your javascript can make a request to. Start by telling WP you want to create an endpoint:
add_action( 'rest_api_init', function () { // when WP sets up the REST API
register_rest_route( // tell it we want an endpoint
'ahmed/v1', '/test/', // at example.com/wp-json/ahmed/v1/test
[
'methods' => 'GET', // that it handles GET requests
'callback' => 'ahmed_test_endpoint' // and calls this function when hit
]
);
} );
When you visit /wp-json/ahmed/v1/test
it will run the function ahmed_test_endpoint
, so lets create that function:
function ahmed_test_endpoint( $request ) {
return 'Hello World';
}
The REST API will take whatever you return, JSON encode it, and send it out. You can return a WP_Error
object if something goes wrong and it will change the HTTP codes etc and output the message. If you need any of the parameters, use the $request
object, e.g. if you added ?bananas=yummy
to the URL, then $request['bananas']
will contain "yummy"
, just like $_GET
.
Remember to flush/resave your permalinks when you add a new endpoint!
Now when we go to yoursite.com/wp-json/ahmed/v1/test
you'll see "Hello World"
If you like, you can expand register_rest_route
to add more information, such as which parameters your code expects, how to validate them, checking if the user is logged in and has permission to do what they want to do, etc.
If you do this, the REST API will even help you out, so if you tell it there's going to be an ID parameter, but none is given, it'll tell you the ID parameter is missing. Admin AJAX, or stand alone PHP files won't do this, and it makes debugging very difficult. It also greatly improves security
Why Not A Standalone PHP File?
- WP APIs won't be available so you'll need to bootstrap WP manually, which is painful
- The endpoint is available even if your plugin/theme is deactivated which can pose a security issue
- Other plugins can't hook into it, so no benefits from caching or optimisation plugins, so there's a possible performance penalty
- You'll need to roll out all the security checks yourself, building them manually, and that's not easy. WP will do them for you if you use the REST API
In the olden days, the solution was to use the Admin AJAX API, but it doesn't do a lot for you. Also, it's very unforgiving, if you don't match your AJAX actions correctly, you get a cryptic response. It also does no checking beyond logged in/out, no validation or sanitisation, and no discovery mechanisms
You can put your code in a plugin, then create a REST API endpoint.
For example lets create a plugin, just put a PHP file with a comment in it at the top like this:
<?php
/**
* Plugin Name: Ahmeds Plugin
**/
Now you'll see "Ahmeds Plugin" in the plugins folder. You can put WP code in here that will run such as filters, actions, classes, etc. Some people put these things in their themes functions.php
, but themes are for visuals/presentation, and you lose it all when you switch a theme.
Now lets make an endpoint your javascript can make a request to. Start by telling WP you want to create an endpoint:
add_action( 'rest_api_init', function () { // when WP sets up the REST API
register_rest_route( // tell it we want an endpoint
'ahmed/v1', '/test/', // at example.com/wp-json/ahmed/v1/test
[
'methods' => 'GET', // that it handles GET requests
'callback' => 'ahmed_test_endpoint' // and calls this function when hit
]
);
} );
When you visit /wp-json/ahmed/v1/test
it will run the function ahmed_test_endpoint
, so lets create that function:
function ahmed_test_endpoint( $request ) {
return 'Hello World';
}
The REST API will take whatever you return, JSON encode it, and send it out. You can return a WP_Error
object if something goes wrong and it will change the HTTP codes etc and output the message. If you need any of the parameters, use the $request
object, e.g. if you added ?bananas=yummy
to the URL, then $request['bananas']
will contain "yummy"
, just like $_GET
.
Remember to flush/resave your permalinks when you add a new endpoint!
Now when we go to yoursite.com/wp-json/ahmed/v1/test
you'll see "Hello World"
If you like, you can expand register_rest_route
to add more information, such as which parameters your code expects, how to validate them, checking if the user is logged in and has permission to do what they want to do, etc.
If you do this, the REST API will even help you out, so if you tell it there's going to be an ID parameter, but none is given, it'll tell you the ID parameter is missing. Admin AJAX, or stand alone PHP files won't do this, and it makes debugging very difficult. It also greatly improves security
Why Not A Standalone PHP File?
- WP APIs won't be available so you'll need to bootstrap WP manually, which is painful
- The endpoint is available even if your plugin/theme is deactivated which can pose a security issue
- Other plugins can't hook into it, so no benefits from caching or optimisation plugins, so there's a possible performance penalty
- You'll need to roll out all the security checks yourself, building them manually, and that's not easy. WP will do them for you if you use the REST API
In the olden days, the solution was to use the Admin AJAX API, but it doesn't do a lot for you. Also, it's very unforgiving, if you don't match your AJAX actions correctly, you get a cryptic response. It also does no checking beyond logged in/out, no validation or sanitisation, and no discovery mechanisms
edited 15 hours ago
answered 15 hours ago
Tom J Nowell♦Tom J Nowell
33.2k44799
33.2k44799
i didnt get where to put this empty php file should i create this "ahmeds plugin" folder in plugins
– ahmed
15 hours ago
A plugin is just a PHP file in the plugins folder with a comment at the top, in a very literal sense. A good example is thehello-dolly.php
file that comes with every WP install. You could put it in a subfolder if you really want to, but it's not necessary, notice I made no mention of creating folders in my answer, there were no missing steps to fill in, create a PHP file in the plugins folder, put a comment at the top, and save, that's all the steps
– Tom J Nowell♦
15 hours ago
where to put the add action script?
– ahmed
15 hours ago
add a comment |
i didnt get where to put this empty php file should i create this "ahmeds plugin" folder in plugins
– ahmed
15 hours ago
A plugin is just a PHP file in the plugins folder with a comment at the top, in a very literal sense. A good example is thehello-dolly.php
file that comes with every WP install. You could put it in a subfolder if you really want to, but it's not necessary, notice I made no mention of creating folders in my answer, there were no missing steps to fill in, create a PHP file in the plugins folder, put a comment at the top, and save, that's all the steps
– Tom J Nowell♦
15 hours ago
where to put the add action script?
– ahmed
15 hours ago
i didnt get where to put this empty php file should i create this "ahmeds plugin" folder in plugins
– ahmed
15 hours ago
i didnt get where to put this empty php file should i create this "ahmeds plugin" folder in plugins
– ahmed
15 hours ago
A plugin is just a PHP file in the plugins folder with a comment at the top, in a very literal sense. A good example is the
hello-dolly.php
file that comes with every WP install. You could put it in a subfolder if you really want to, but it's not necessary, notice I made no mention of creating folders in my answer, there were no missing steps to fill in, create a PHP file in the plugins folder, put a comment at the top, and save, that's all the steps– Tom J Nowell♦
15 hours ago
A plugin is just a PHP file in the plugins folder with a comment at the top, in a very literal sense. A good example is the
hello-dolly.php
file that comes with every WP install. You could put it in a subfolder if you really want to, but it's not necessary, notice I made no mention of creating folders in my answer, there were no missing steps to fill in, create a PHP file in the plugins folder, put a comment at the top, and save, that's all the steps– Tom J Nowell♦
15 hours ago
where to put the add action script?
– ahmed
15 hours ago
where to put the add action script?
– ahmed
15 hours ago
add a comment |
If you want to do some AJAX in your theme and you're asking where to put the PHP file that will process such request, then... Nowhere is the real answer...
In WordPress you should deal with AJAX a little bit different than in normal PHP apps. There is already a mechanism for such requests.
So first, you should localize your JS script:
wp_localize_script( 'ajax-script', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) );
Then you should use that variable as request address:
// it's important to send "action" in that request - this way WP will know which action should be processing this request
jQuery.get(ajax_object.ajax_url, {'action': 'my_action', ...}, ... );
And then you should register your callbacks that will process the request:
add_action( 'wp_ajax_my_action', 'my_action' ); // for logged in users
add_action( 'wp_ajax_nopriv_my_action', 'my_action' ); // for anonymous users
function my_action() {
...
}
You can read more on that topic here:
- https://codex.wordpress.org/AJAX_in_Plugins
1
Nice, but a REST API endpoint would have been better, and easier to debug and work with
– Tom J Nowell♦
15 hours ago
@TomJNowell it depends on what he wants to do (and it's a little bit hard to guess based on the description in question)...
– Krzysiek Dróżdż
15 hours ago
I can't see a case where the admin ajax API can be used but the REST API can't, the REST API is superior in every conceivable way and does everything Admin AJAX does ( but better )
– Tom J Nowell♦
15 hours ago
Well, there are a lot of such cases - for example every time when a JS library needs to get HTML or some other format and not a JSON - for instance there are JS search suggestions plugins that do so... They're two available mechanisms and it's very opinion-based... I wouldn't say any of these is superior. If you prefer REST - go for it.
– Krzysiek Dróżdż
15 hours ago
add a comment |
If you want to do some AJAX in your theme and you're asking where to put the PHP file that will process such request, then... Nowhere is the real answer...
In WordPress you should deal with AJAX a little bit different than in normal PHP apps. There is already a mechanism for such requests.
So first, you should localize your JS script:
wp_localize_script( 'ajax-script', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) );
Then you should use that variable as request address:
// it's important to send "action" in that request - this way WP will know which action should be processing this request
jQuery.get(ajax_object.ajax_url, {'action': 'my_action', ...}, ... );
And then you should register your callbacks that will process the request:
add_action( 'wp_ajax_my_action', 'my_action' ); // for logged in users
add_action( 'wp_ajax_nopriv_my_action', 'my_action' ); // for anonymous users
function my_action() {
...
}
You can read more on that topic here:
- https://codex.wordpress.org/AJAX_in_Plugins
1
Nice, but a REST API endpoint would have been better, and easier to debug and work with
– Tom J Nowell♦
15 hours ago
@TomJNowell it depends on what he wants to do (and it's a little bit hard to guess based on the description in question)...
– Krzysiek Dróżdż
15 hours ago
I can't see a case where the admin ajax API can be used but the REST API can't, the REST API is superior in every conceivable way and does everything Admin AJAX does ( but better )
– Tom J Nowell♦
15 hours ago
Well, there are a lot of such cases - for example every time when a JS library needs to get HTML or some other format and not a JSON - for instance there are JS search suggestions plugins that do so... They're two available mechanisms and it's very opinion-based... I wouldn't say any of these is superior. If you prefer REST - go for it.
– Krzysiek Dróżdż
15 hours ago
add a comment |
If you want to do some AJAX in your theme and you're asking where to put the PHP file that will process such request, then... Nowhere is the real answer...
In WordPress you should deal with AJAX a little bit different than in normal PHP apps. There is already a mechanism for such requests.
So first, you should localize your JS script:
wp_localize_script( 'ajax-script', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) );
Then you should use that variable as request address:
// it's important to send "action" in that request - this way WP will know which action should be processing this request
jQuery.get(ajax_object.ajax_url, {'action': 'my_action', ...}, ... );
And then you should register your callbacks that will process the request:
add_action( 'wp_ajax_my_action', 'my_action' ); // for logged in users
add_action( 'wp_ajax_nopriv_my_action', 'my_action' ); // for anonymous users
function my_action() {
...
}
You can read more on that topic here:
- https://codex.wordpress.org/AJAX_in_Plugins
If you want to do some AJAX in your theme and you're asking where to put the PHP file that will process such request, then... Nowhere is the real answer...
In WordPress you should deal with AJAX a little bit different than in normal PHP apps. There is already a mechanism for such requests.
So first, you should localize your JS script:
wp_localize_script( 'ajax-script', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) );
Then you should use that variable as request address:
// it's important to send "action" in that request - this way WP will know which action should be processing this request
jQuery.get(ajax_object.ajax_url, {'action': 'my_action', ...}, ... );
And then you should register your callbacks that will process the request:
add_action( 'wp_ajax_my_action', 'my_action' ); // for logged in users
add_action( 'wp_ajax_nopriv_my_action', 'my_action' ); // for anonymous users
function my_action() {
...
}
You can read more on that topic here:
- https://codex.wordpress.org/AJAX_in_Plugins
answered 15 hours ago
Krzysiek DróżdżKrzysiek Dróżdż
18.3k73248
18.3k73248
1
Nice, but a REST API endpoint would have been better, and easier to debug and work with
– Tom J Nowell♦
15 hours ago
@TomJNowell it depends on what he wants to do (and it's a little bit hard to guess based on the description in question)...
– Krzysiek Dróżdż
15 hours ago
I can't see a case where the admin ajax API can be used but the REST API can't, the REST API is superior in every conceivable way and does everything Admin AJAX does ( but better )
– Tom J Nowell♦
15 hours ago
Well, there are a lot of such cases - for example every time when a JS library needs to get HTML or some other format and not a JSON - for instance there are JS search suggestions plugins that do so... They're two available mechanisms and it's very opinion-based... I wouldn't say any of these is superior. If you prefer REST - go for it.
– Krzysiek Dróżdż
15 hours ago
add a comment |
1
Nice, but a REST API endpoint would have been better, and easier to debug and work with
– Tom J Nowell♦
15 hours ago
@TomJNowell it depends on what he wants to do (and it's a little bit hard to guess based on the description in question)...
– Krzysiek Dróżdż
15 hours ago
I can't see a case where the admin ajax API can be used but the REST API can't, the REST API is superior in every conceivable way and does everything Admin AJAX does ( but better )
– Tom J Nowell♦
15 hours ago
Well, there are a lot of such cases - for example every time when a JS library needs to get HTML or some other format and not a JSON - for instance there are JS search suggestions plugins that do so... They're two available mechanisms and it's very opinion-based... I wouldn't say any of these is superior. If you prefer REST - go for it.
– Krzysiek Dróżdż
15 hours ago
1
1
Nice, but a REST API endpoint would have been better, and easier to debug and work with
– Tom J Nowell♦
15 hours ago
Nice, but a REST API endpoint would have been better, and easier to debug and work with
– Tom J Nowell♦
15 hours ago
@TomJNowell it depends on what he wants to do (and it's a little bit hard to guess based on the description in question)...
– Krzysiek Dróżdż
15 hours ago
@TomJNowell it depends on what he wants to do (and it's a little bit hard to guess based on the description in question)...
– Krzysiek Dróżdż
15 hours ago
I can't see a case where the admin ajax API can be used but the REST API can't, the REST API is superior in every conceivable way and does everything Admin AJAX does ( but better )
– Tom J Nowell♦
15 hours ago
I can't see a case where the admin ajax API can be used but the REST API can't, the REST API is superior in every conceivable way and does everything Admin AJAX does ( but better )
– Tom J Nowell♦
15 hours ago
Well, there are a lot of such cases - for example every time when a JS library needs to get HTML or some other format and not a JSON - for instance there are JS search suggestions plugins that do so... They're two available mechanisms and it's very opinion-based... I wouldn't say any of these is superior. If you prefer REST - go for it.
– Krzysiek Dróżdż
15 hours ago
Well, there are a lot of such cases - for example every time when a JS library needs to get HTML or some other format and not a JSON - for instance there are JS search suggestions plugins that do so... They're two available mechanisms and it's very opinion-based... I wouldn't say any of these is superior. If you prefer REST - go for it.
– Krzysiek Dróżdż
15 hours ago
add a comment |
You should be able to use the functions defined in your PHP files by including it into your functions.php
file. It's kinda hard to advice you better without knowing more about your structure. But functions.php
seems to be a good location to require your file IMHO.
New contributor
1
Hmm, I'm not sure if he wants to include PHP files or he's asking, where should he put a PHP file that will process AJAX calls.
– Krzysiek Dróżdż
15 hours ago
@Krzysiek Dróżdż what i need is how to add a php file that i can refer to from another code like when you program with html you put php tag and the link to a php file thats what i want in to do wordpress
– ahmed
15 hours ago
@Ahmed, do you mean something like phpinclude()
andrequire()
? If yes, the WordPress equivalent would be to useget_template_part()
– jsmod
5 hours ago
add a comment |
You should be able to use the functions defined in your PHP files by including it into your functions.php
file. It's kinda hard to advice you better without knowing more about your structure. But functions.php
seems to be a good location to require your file IMHO.
New contributor
1
Hmm, I'm not sure if he wants to include PHP files or he's asking, where should he put a PHP file that will process AJAX calls.
– Krzysiek Dróżdż
15 hours ago
@Krzysiek Dróżdż what i need is how to add a php file that i can refer to from another code like when you program with html you put php tag and the link to a php file thats what i want in to do wordpress
– ahmed
15 hours ago
@Ahmed, do you mean something like phpinclude()
andrequire()
? If yes, the WordPress equivalent would be to useget_template_part()
– jsmod
5 hours ago
add a comment |
You should be able to use the functions defined in your PHP files by including it into your functions.php
file. It's kinda hard to advice you better without knowing more about your structure. But functions.php
seems to be a good location to require your file IMHO.
New contributor
You should be able to use the functions defined in your PHP files by including it into your functions.php
file. It's kinda hard to advice you better without knowing more about your structure. But functions.php
seems to be a good location to require your file IMHO.
New contributor
New contributor
answered 16 hours ago
HitoHito
1011
1011
New contributor
New contributor
1
Hmm, I'm not sure if he wants to include PHP files or he's asking, where should he put a PHP file that will process AJAX calls.
– Krzysiek Dróżdż
15 hours ago
@Krzysiek Dróżdż what i need is how to add a php file that i can refer to from another code like when you program with html you put php tag and the link to a php file thats what i want in to do wordpress
– ahmed
15 hours ago
@Ahmed, do you mean something like phpinclude()
andrequire()
? If yes, the WordPress equivalent would be to useget_template_part()
– jsmod
5 hours ago
add a comment |
1
Hmm, I'm not sure if he wants to include PHP files or he's asking, where should he put a PHP file that will process AJAX calls.
– Krzysiek Dróżdż
15 hours ago
@Krzysiek Dróżdż what i need is how to add a php file that i can refer to from another code like when you program with html you put php tag and the link to a php file thats what i want in to do wordpress
– ahmed
15 hours ago
@Ahmed, do you mean something like phpinclude()
andrequire()
? If yes, the WordPress equivalent would be to useget_template_part()
– jsmod
5 hours ago
1
1
Hmm, I'm not sure if he wants to include PHP files or he's asking, where should he put a PHP file that will process AJAX calls.
– Krzysiek Dróżdż
15 hours ago
Hmm, I'm not sure if he wants to include PHP files or he's asking, where should he put a PHP file that will process AJAX calls.
– Krzysiek Dróżdż
15 hours ago
@Krzysiek Dróżdż what i need is how to add a php file that i can refer to from another code like when you program with html you put php tag and the link to a php file thats what i want in to do wordpress
– ahmed
15 hours ago
@Krzysiek Dróżdż what i need is how to add a php file that i can refer to from another code like when you program with html you put php tag and the link to a php file thats what i want in to do wordpress
– ahmed
15 hours ago
@Ahmed, do you mean something like php
include()
and require()
? If yes, the WordPress equivalent would be to use get_template_part()
– jsmod
5 hours ago
@Ahmed, do you mean something like php
include()
and require()
? If yes, the WordPress equivalent would be to use get_template_part()
– jsmod
5 hours ago
add a comment |
ahmed is a new contributor. Be nice, and check out our Code of Conduct.
ahmed is a new contributor. Be nice, and check out our Code of Conduct.
ahmed is a new contributor. Be nice, and check out our Code of Conduct.
ahmed is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to WordPress Development Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fwordpress.stackexchange.com%2fquestions%2f333343%2fwhere-to-include-php-files-in-wordpress-and-how-to-refer-to-them-later%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
2
have you looked at creating a REST API endpoints? You should never ping a PHP file directly in WP as it has security and maintainability consequences
– Tom J Nowell♦
15 hours ago