- This topic is empty.
- AuthorPosts
-
March 7, 2011 at 3:40 am #9506
cam
ParticipantI added custom script:
wp_enqueue_script('functions', get_bloginfo('template_url') . '/js/functions.js', 'search', null, false);
It works great, except in the
functions.js
I have:Reset.style.background = "url('../images/searchfield_clear.png') no-repeat top left";
This used to work before, until I changed to pretty permalinks and .htaccess
The folder hierarchy is like:
themename/js themename/images
(the images and js folder are in themename folder)I tried ../images – ./image – /images
Normally it should go back 1 level wherever the js file is located….
I don’t want to use full path.
Is there another way that WordPress can recognize in the javascript file to have the correct path?
Currently I am just confused what I am doing wrong.
March 7, 2011 at 4:07 am #9510ajj
ParticipantYou could avoid hardcoding the full path by setting a JS variable in the header of your template, before
wp_head()
is called, holding the template URL. Like:<script type="text/javascript"> var templateUrl = '<?= get_bloginfo("template_url"); ?>'; </script>
And use that variable to set the background (I realize you know how to do this, I only include these details in case they helps others):
Reset.style.background = " url('"+templateUrl+"/images/searchfield_clear.png') ";
March 8, 2011 at 7:14 am #9511chris
ParticipantAccording to the WordPress documentation, you should use
wp_localize_script()
in your functions.php file. This will create a Javascript Object in the header, which will be available to your scripts at runtime.See Codex
Example:
<?php wp_localize_script('mylib', 'WPURLS', array( 'siteurl' => get_option('siteurl') )); ?>
To access this variable within in Javascript, you would simply do:
<script type="text/javascript"> var url = WPURLS.siteurl; </script>
November 12, 2012 at 5:32 am #9509keithics
Participantwp_register_script('custom-js',WP_PLUGIN_URL.'/PLUGIN_NAME/js/custom.js',array(),NULL,true); wp_enqueue_script('custom-js'); $wnm_custom = array( 'template_url' => get_bloginfo('template_url') ); wp_localize_script( 'custom-js', 'wnm_custom', $wnm_custom );
and in custom.js
alert(wnm_custom.template_url);
June 14, 2016 at 5:57 am #9508clay-risser
ParticipantIf the javascript file is loaded from the admin dashboard, this javascript function will give you the root of your WordPress installation. I use this a lot when I’m building plugins that need to make ajax requests from the admin dashboard.
function getHomeUrl() { var href = window.location.href; var index = href.indexOf('/wp-admin'); var homeUrl = href.substring(0, index); return homeUrl; }
May 9, 2018 at 12:33 pm #9507toine-pel
ParticipantFor users working with the Genesis framework.
Add the following to your child theme
functions.php
add_action( 'genesis_before', 'script_urls' ); function script_urls() { ?> <script type="text/javascript"> var stylesheetDir = '<?= get_bloginfo("stylesheet_directory"); ?>'; </script> <?php }
And use that variable to set the relative url in your script. For example:
Reset.style.background = " url('"+stylesheetDir+"/images/searchfield_clear.png') ";
- AuthorPosts
- You must be logged in to reply to this topic.