I'm trying to get the user information when using a custom endpoint. It's not returning any data from get_user_meta. Am I missing an include or something?
My code looks like:
<?php
if ( !defined('ABSPATH') ) {
/** Set up WordPress environment */
echo "No ABSPATH!";
require_once( '../../../wp-load.php');
}
notify_user();
function notify_user() {
$authid = 4;
$email = get_user_meta($authid, 'user_email', true);
$firstname = get_user_meta($authid, 'user_nicename', true);
mail ($email, "Subject", "Hello" . $firstname);
}
?>
Arnav Joy answers:
try this
$user_email = get_the_author_meta( 'user_email',$authid );
https://codex.wordpress.org/Function_Reference/get_the_author_meta
testimonials comments:
This one's a winner. Not sure why it doesn't like the get_user_meta, but get_the_author_meta seems to be happy.
Thanks!
Luis Abarca answers:
Try to initialize the wp object.
if ( !defined('ABSPATH') ) {
/** Set up WordPress environment */
echo "No ABSPATH!";
require_once( '../../../wp-load.php');
wp();
}
Dbranes answers:
I think the problem is that user_email and user_nicename are part of the wp_user table and not inside your wp_usermeta table.
You should therefore to try this:
$user = get_user_by('id', 4);
$nicename = $user->user_nicename;
ps: I would recommend using a custom rewrite endpoint instead with <em>add_rewrite_endpoint</em> or consider using <em>admin-ajax.php</em>.
testimonials comments:
Thanks for the hint on the rewrite endpoint, but this one will only be used in one place, and the rest of the script is locked down.