This question already has an answer here:
In the flowing Code :(see down)
I defined a local variable named post_author_nickname
Why I can't use it inside the same function as HTML echo?
I'm using the function directly instead of assigning it to variable
The Code
function head_scripts() {
$options = get_option( 'ps_plugindev' );
if ( isset( $options['twitter'] ) && !is_admin() ) {
$post_id = get_queried_object_id();
$post_author_id = get_post_field( 'post_author', $post_id );
$post_author_nickname = the_author_meta( 'nickname', $post_author_id );
?>
<script type="text/javascript">
function setT() {
var b = document.createElement('a');
b.classList += "twitter-share-button";
b.setAttribute("data-text", "<?php echo $post_author_nickname ?>" );
};
</script>
<?php
}
"< ? php echo $post_author_nickname; ? >"
Not working
"< ? php echo the_author_meta( 'nickname', $post_author_id ); ? > "
Working
Edit 1 :
Thanks @mario for suggesting reading the question What is the difference between get_the_* and the_* template tags in wordpress? - Stack Overflow but I didn't understand what the answer? or how it is related
Edit 2 :
I checked
NOTE: I'm not familiar with php (10%) and only use it for wordpress my background is in c#
EDIT 3 :
After reading @mario suggested anser multible times I got it.
When Gaurav sugesited in his anser changing
$post_author_nickname = the_author_meta( 'nickname', $post_author_id );
To
$post_author_nickname = get_the_author_meta( 'nickname', $post_author_id );
I didn't note the deferent between the and get prefix to the function name'
Now I understand
Usually, I deleted the question if it is marked as duplicate.
I will leave this note if some one like me didn't get it.
Use this function instead of the_author_meta.
https://developer.wordpress.org/reference/functions/get_the_author_meta/