functions.php에 자바 스크립트를 올바르게 추가하는 방법
-
-
미친 짓입니다. 화살표를 생성하는 코드에서 화살표를 편집 할 수 없습니까?(또는 외부 소스에서 다운로드 했습니까?) 어떤 경우에도 카트 블록 내의 모든 HTML을 두 번 읽고 쓰는 것을 방지하기 위해 단일 함수에서 두 가지 대체를 모두 수행 할 수 있습니다.functions.php에서 페이지에 직접 삽입하는 방법은 모르겠지만 별도의 스크립트 파일에 저장할 수 있습니다 (아직 추가 할 수없는 경우). [`wp-enqueue-script`] (http://codex.wordpress.org/Function_Reference/wp_enqueue_script)it.또한`$`를`jQuery`로 변경해야합니다 (해당 페이지 섹션 7 참조).That's crazy: can't you edit the arrows out in the code that generates them? (Or is it downloaded from an external source?) In any case you can do both replaces in a single function to avoid reading and writing all the HTML inside the cart block twice. I don't know a way to directly inject that into the page from functions.php but you can save it in a separate script file (if you don't already have one you can add it to) and then [`wp-enqueue-script`](http://codex.wordpress.org/Function_Reference/wp_enqueue_script) it. You'll also have to change the `$`s to `jQuery` (see that page section 7)
- 0
- 2014-06-25
- Rup
-
아니요,삽입하기 전에 제거 할 수 없습니다.가능하다면 나는 그것을 할 방법을 찾지 못했습니다. 단일 기능에 추가하는 것이 좋습니다.이렇게 보일까요? $ (문서) .ready (function () { $ ( ". woocommerce-cart"). html (function (i,val) { return val.replace ( "→",""); return val.replace ( "←",""); }); }); 대기열에 넣기 스크립트를 살펴 보겠습니다.그래도 좀 복잡해 보이지만 .. 감사합니다!Nope, I'm pretty sure it can't be removed before inserted. If it can, I haven't been able to find a way to do it. Good point about adding it in a single function. Would it look like this? $(document).ready(function() { $(".woocommerce-cart").html(function(i, val) { return val.replace(" →", ""); return val.replace("← ", ""); }); }); I will look into the enqueue script. Seems a bit complicated, though.. Thanks!
- 0
- 2014-06-25
- user2806026
-
괜찮아.나는이 접근법을 시도했다. 'removeArrows.js'라는 파일을 만들어 플러그인 폴더에 넣었습니다.이것은 $ 대신jQuery를 제외하고 원본 코드와 동일한 내용을 가지고 있습니다. 그런 다음functions.php에 다음을 추가했습니다. `function wpb_adding_scripts () { wp_register_script ( 'my_amazing_script',plugins_url ( 'removeArrows.js',__FILE__),array ( 'jquery'),'1.1',true); wp_enqueue_script ( 'my_amazing_script'); } add_action ( 'wp_enqueue_scripts','wpb_adding_scripts'); (죄송합니다. 코드를 올바르게 표시하는 방법을 알 수 없습니다.) 이것은 작동하지 않았습니다.내가 고칠 수 있도록 도와 줄 수 있습니까?Okay. I tried this approach; Made a file named 'removeArrows.js' and placed it in my plugin folder. This has the same content as the original code, except jQuery instead $. then I added the following to functions.php; `function wpb_adding_scripts() { wp_register_script('my_amazing_script', plugins_url('removeArrows.js', __FILE__), array('jquery'),'1.1', true); wp_enqueue_script('my_amazing_script'); } add_action( 'wp_enqueue_scripts', 'wpb_adding_scripts' ); (Sorry, I cant figure out how to make the code display properly) This did not work. Can you help me fix it?
- 0
- 2014-06-25
- user2806026
-
[편집]을 제출하고 모든 관련 정보를 ** 질문에 직접 추가 ** 코멘트 섹션을 사용하여 코드를 추가하지 마십시오.Please file an [edit] and add all relevant info **directly to your question** Do not use the comment section to add code
- 1
- 2014-06-26
- Pieter Goosen
-
4 대답
- 투표
-
- 2014-06-26
$scr
의wp_register_script()
기능이 잘못되었습니다.functions.php가 플러그인 안에 있고 removeArrows.js가 플러그인 루트에 있다는 점을 감안할 때wp_register_script()
은 다음과 같아야합니다.plugins_url( '/removeArrows.js' , __FILE__ )
또 한 가지 주목할 점은 스크립트와 스타일을 마지막으로로드하는 것이 항상 좋습니다. 이렇게하면 다른 스크립트와 스타일에 의해 재정의되지 않습니다. 이렇게하려면 $priority)에 매우 낮은 우선 순위 (매우 높은 숫자)를 추가하면됩니다. rel="noreferrer">
add_action
.add_action( 'wp_enqueue_scripts', 'wpb_adding_scripts', 999 );
그리고 항상
wp_enqueue_scripts
액션 후크는 사용하기에 적합한 후크입니다. 스크립트 및 스타일을wp_head
또는wp_footer
에 직접로드하지 마세요 .수정
테마의 경우 모든 항목을 테마로 이동했음을 표시 했으므로
wp_register_script()
이 다음으로 변경됩니다.get_template_directory_uri() . '/removeArrows.js'
부모 테마 및이
get_stylesheet_directory_uri() . '/removeArrows.js'
아동 테마 용. 완전한 코드는 다음과 같습니다.
function wpb_adding_scripts() { wp_register_script('my_amazing_script', get_template_directory_uri() . '/removeArrows.js', array('jquery'),'1.1', true); wp_enqueue_script('my_amazing_script'); } add_action( 'wp_enqueue_scripts', 'wpb_adding_scripts', 999 );
Your
$scr
in yourwp_register_script()
function is wrong. Given that your functions.php is inside your plugin, and your removeArrows.js is in the root of your plugin, your$scr
should look like thisplugins_url( '/removeArrows.js' , __FILE__ )
Another point of note, it is always good practice to load your scripts and styles last. This will ensure that it will not get overriden by other scripts and styles. To do this, just add a very low priority (very high number) to your priority parameter (
$priority
) ofadd_action
.add_action( 'wp_enqueue_scripts', 'wpb_adding_scripts', 999 );
And always load/enqueue scripts and styles via the
wp_enqueue_scripts
action hook, as this is the proper hook to use. Do not load scripts and styles directly towp_head
orwp_footer
EDIT
For themes, as you've indicated that you now moved everything to your theme, your
$scr
would change to thisget_template_directory_uri() . '/removeArrows.js'
for parent themes and this
get_stylesheet_directory_uri() . '/removeArrows.js'
for child themes. Your complete code should look like this
function wpb_adding_scripts() { wp_register_script('my_amazing_script', get_template_directory_uri() . '/removeArrows.js', array('jquery'),'1.1', true); wp_enqueue_script('my_amazing_script'); } add_action( 'wp_enqueue_scripts', 'wpb_adding_scripts', 999 );
-
훌륭한 조언에 감사드립니다.이것은 사용하는 접근 방식처럼 보입니다.하지만 한 가지 질문이 있습니다.functions.php는 내 테마 폴더에 있습니다.js 파일이 동일한 테마 루트 폴더에 있으면 어떻게 링크합니까?Thanks a lot for your great advice. This seems like the approach to use. One question though; the functions.php is in my theme folder. How would I link the js-file if it's just in the same, theme root folder?
- 0
- 2014-06-26
- user2806026
-
모든 것을 플러그인이나 테마에 보관해야하며 분할하지 마십시오.테마에있는 경우`$ scr`은`get_template_directory_uri ()입니다.상위 테마의 경우 '/removeArrows.js'`,`get_templatestylesheet_directory_uri ().childthemes의 경우 '/removeArrows.js'`You should keep everything in a plugin or in a theme, don't split them. If you are in a theme, your `$scr` would be `get_template_directory_uri() . '/removeArrows.js'` for parent themes, and `get_templatestylesheet_directory_uri() . '/removeArrows.js'` for childthemes
- 0
- 2014-06-26
- Pieter Goosen
-
다시 시도해 보았습니다. 이번에는 테마 폴더에 removeArrows.js를 직접 추가하고functions.php에서 다음을 사용했습니다. function wpb_adding_scripts () { wp_register_script ( 'my_amazing_script',get_template_directory_uri (). '/removeArrows.js',__FILE__),array ( 'jquery'),'1.1',true); wp_enqueue_script ( 'my_amazing_script'); } add_action ( 'wp_enqueue_scripts','wpb_adding_scripts',999); 이것은 구문 오류,wp_register_script 줄에 예기치 않은 ','구문 오류가 발생합니다.Tried again, this time adding the removeArrows.js directly in theme folder and using the following in functions.php; function wpb_adding_scripts() { wp_register_script('my_amazing_script', get_template_directory_uri() . '/removeArrows.js', __FILE__), array('jquery'),'1.1', true); wp_enqueue_script('my_amazing_script'); } add_action( 'wp_enqueue_scripts', 'wpb_adding_scripts', 999 ); this gives me Parse error: syntax error, unexpected ',' on the wp_register_script line.
- 0
- 2014-06-26
- user2806026
-
`get_template_directory_uri ().'/removeArrows.js',FILE)`은`get_template_directory_uri () 여야합니다.'/removeArrows.js'``get_template_directory_uri() . '/removeArrows.js', FILE)` should just be `get_template_directory_uri() . '/removeArrows.js'`
- 0
- 2014-06-26
- Pieter Goosen
-
아니.원본 게시물 하단에 편집 한 코드를 완전히 사용했습니다.내용을 볼 때 카트 페이지를 고정하는 것뿐입니다.그냥 포기할 것 같아요 :-) 그래도 마지막 수단;get_template_directory_uri ()가 부모 테마 용이라고 언급 한 다음 최종 완성 코드에서 하위 테마 용이라고 언급했습니다.무엇 이니?내 테마는 부모입니다 :-)Nope. Used your completely code you edited into the bottom of your original post. Only thing it does is to freeze the cart page when viewing the contents. I think I'll just give up :-) One last resort though; you started by mentioning that get_template_directory_uri() is for parent themes, and then in the final complete code that it's for child themes. Which is it? My theme is a parent :-)
- 0
- 2014-06-27
- user2806026
-
죄송합니다. 복사하여 붙여 넣기 오류가 발생했습니다.완전한 코드의 마지막 부분은 부모 테마입니다.이것이 작동하지 않으면 스크립트를 살펴 봐야합니다.Sorry, made a copy and paste error there. The last piece of complete code is for parent theme. If this doesn't work, you will need to have a look at your script
- 0
- 2014-06-27
- Pieter Goosen
-
- 2014-06-25
다른 외부js 파일을 추가하지 않을 것입니다. 가져올 여분의 불필요한 리소스 일뿐입니다. 이는 페이지로드 시간 측면에서 줄여야 할 것입니다.
wp_head
후크를 사용하여 웹 사이트 헤드에이jQuery 스 니펫을 추가합니다. 테마 또는 플러그인 함수 파일에 다음을 붙여 넣습니다. 또한 아래에서 볼 수 있듯이jQuery가 충돌 방지 모드에 있는지 확인했습니다.add_action('wp_head','woocommerce_js'); function woocommerce_js() { // break out of php ?> jQuery(document).ready(function($) { $(".woocommerce-cart").html(function(i, val) { return val.replace(" →", ""); }); $(".woocommerce-cart").html(function(i, val) { return val.replace("← ", ""); }); }); <?php } // break back into php
이 작업을 수행하고 페이지를 새로 고침했으면 페이지 소스를 확인하여이jQuery 스 니펫이 실제로 페이지에로드되고 있는지 확인하세요. 그렇다면 사용중인 실제jQuery 스 니펫에서 벗어나지 않는 한 작동합니다.
I would not add another external js file, its just an extra and unnecessary resource to fetch and that is something we want to cut down on in terms of page loading times.
I would add this jQuery snippet in your websites head using the
wp_head
hook. You would paste the following in your theme or plugins functions file. I have also made sure jQuery is in no-conflict mode as you can see below.add_action('wp_head','woocommerce_js'); function woocommerce_js() { // break out of php ?> jQuery(document).ready(function($) { $(".woocommerce-cart").html(function(i, val) { return val.replace(" →", ""); }); $(".woocommerce-cart").html(function(i, val) { return val.replace("← ", ""); }); }); <?php } // break back into php
Once you have done this and refreshed your page, check the page source to make sure this jQuery snippet is in fact being loaded into your page. If it is then it should work unless their is something off in the actual jQuery snippet you are using.
-
그러나 이것은 자바 스크립트를로드하는 워드 프레스 방식이 아닙니다.자세한 내용은 [`wp_enqueue_script ()`] (https://codex.wordpress.org/Function_Reference/wp_enqueue_script)를 참조하세요.That's not the WordPress way to load Javascript, though. See [`wp_enqueue_script()`](https://codex.wordpress.org/Function_Reference/wp_enqueue_script) for more information.
- 0
- 2014-06-25
- Pat J
-
안녕하세요 @PatJ,모든 Javascript 기능이 포함 된 외부 JS 라이브러리 또는 JS 파일을로드하는 데 동의합니다. 그렇다면 절대적으로 올바른 방법이 될 것입니다.그러나 자바 스크립트 스 니펫을로드하는 경우 완전히 새로운 JS 파일을 만들고이를위한 추가 HTTP 요청을 추가하는 것은 의미가 없습니다.예를 들어 Google Analytics를 사용하면 테마 또는 사용자 지정 빌드의 99 %에서 JS는 테마 옵션 또는 함수 파일을 통해 머리글 또는 바닥 글에 추가됩니다.이런 식으로 JS 또는 CSS 스 니펫을 포함하는 일반적인 관행입니다.Hi @PatJ, I agree, for loading an external JS library or JS file with all your Javascript functions in it, then yes absolutely that would be the correct way. However if you are loading a snippet of Javascript it does not make sense to create a whole new JS file and add an additional HTTP request just for that. Take Google Analytics for example, in 99% of themes or custom builds, the JS will be added into the the header or footer via theme options or functions file. Its common practice to include JS or even CSS snippets this way.
- 2
- 2014-06-25
- Matt Royal
-
그러나 "일반적인 관행"은 정확하지 않습니다.[`wp_enqueue_script ()`문서] (https://codex.wordpress.org/Function_Reference/wp_enqueue_script) 짝수 상태 ** 이것은 자바 스크립트를 WordPress 생성 페이지에 연결하는 데 권장되는 방법입니다 **."Common practice" doesn't make it correct, though. The [`wp_enqueue_script()` docs](https://codex.wordpress.org/Function_Reference/wp_enqueue_script) even state **This is the recommended method of linking JavaScript to a WordPress generated page**.
- 1
- 2014-06-26
- Pat J
-
WordPress 기본 24 개 테마를 사용하면 header.php에 html5.js가로드됩니다.브라우저가 IE <9의 조건을 충족하는지 확인하는 이유 때문에 이런 방식으로 승인되었지만 내 요점은 당연히 대기열에 추가하는 것이 권장되고 선호되는 방법이지만 사용자를 둘러싼 다른 모든 변수/상황에 따라 달라진다는 것입니다.그것을 달성하려는 것이 항상 가장 실용적이지는 않을 수 있으며 약간의 재량을 사용해야한다고 생각합니다.봐요,저도이 관점에서 완전히 틀렸을 수 있습니다. 정말 경험이 많은 사람들이 말하는 것을 듣고 싶습니다. :-)If you take WordPress default twentyfourteen theme, it loads html5.js in the header.php. Granted its doe this way for a reason so as to check of the browser meets the condition of being IE < 9, but my point is that understandably, enqueuing is the recommended and preferred method but depending on all the other variables/circumstances surrounding what you are trying to achieve it may not always be the most practical and I think some discretion should be used. Look, I could be completely wrong in this view as well, I'm interested to hear what some of the really experienced guys have to say :-)
- 0
- 2014-06-26
- Matt Royal
-
훌륭한 제안에 감사드립니다.그래도 작동시킬 수 없습니다.내functions.php의Thanks for your great suggestion. I can't get it to work though; if I add your code inside the
- 0
- 2014-06-26
- user2806026
functions.php 파일에 붙여 넣을 때-functions.php 파일의 1 행에 이미`When you paste it in your functions.php file - remove the first `- 0
- 2014-06-26
- Matt Royal
이 JS 코드는 로 래핑되어야합니다.WP에서 JS를 렌더링하는이 방법은 권장되지 않지만 경우에 따라 빠른 솔루션이 모범 사례보다 더 중요합니다.This JS code needs to wrapped in . This method to render JS in WP is not recommended, but in some cases quick solutions are more important than best practices.- 0
- 2020-01-09
- Tahi Reu
- 2018-08-24
답변이 이미 받아 들여 졌기 때문에 여러 번 해왔 던 바닥 글에 자바 스크립트 코드를 넣는 또 다른 방법이 있다고 말하고 싶습니다.
functions.php 파일 :
function load_script_to_remove_arrow(){ ?> <script> $(document).ready(function() { $(".woocommerce-cart").html(function(i, val) { return val.replace(" →", ""); }); $(".woocommerce-cart").html(function(i, val) { return val.replace("← ", ""); }); }); </script> <?php } add_action( 'wp_footer', 'load_script_to_remove_arrow' );
조건을 사용해야 만 특정 페이지 템플릿에이 스크립트를로드 할 수 있습니다.
if( is_page_template( 'page-template.php' ) ): //put above code (or just add_action part) inside this condition to load file only if the condition is true endif;
page-template.php가 디렉토리 (테마 루트 디렉토리의templates 디렉토리라고 말하십시오)에 있으면 다음과 같이 작성할 수 있습니다.
is_page_template( 'templates/page-template.php' );
As the answer is accepted already so, I just want to say there's another way to enqueue javascript code in footer which I have done many times.
in functions.php file:
function load_script_to_remove_arrow(){ ?> <script> $(document).ready(function() { $(".woocommerce-cart").html(function(i, val) { return val.replace(" →", ""); }); $(".woocommerce-cart").html(function(i, val) { return val.replace("← ", ""); }); }); </script> <?php } add_action( 'wp_footer', 'load_script_to_remove_arrow' );
you can load this script to particular page template only by using condition
if( is_page_template( 'page-template.php' ) ): //put above code (or just add_action part) inside this condition to load file only if the condition is true endif;
if the page-template.php is in directory ( say templates directory in your theme's root dir ) you can write like:
is_page_template( 'templates/page-template.php' );
-
이처럼 바닥 글에 JavaScript를 "굽는"것은 권장하지 않습니다.플러그인 및 테마 개발에서 매우 중요한 후크 해제 또는 수정 (적어도 쉽게)을 방지합니다.만약 당신이 사이트의 최종 사용자이고 빠른 스크립트 나 무언가가 필요하다면 그것을 선택하세요.하지만 여전히`wp_enqueue_script ()`는 거의 항상 보편적으로 더 좋고 더 유연합니다.I would not recommend "baking" the JavaScript into the footer like this. It prevents it from being unhookable or modifiable (at least, easily) which is extremely important in plugin and theme development. If you're the end-user of a site and need a quick script or something, go for it - but even still `wp_enqueue_script()` is almost always universally better and more flexible.
- 0
- 2018-08-24
- Xhynk
- 2018-08-24
질문에 답하려면 먼저 자바 스크립트와 JQuery를 구분해야합니다.
간단한 방식으로 설명 :
- Javascript는 ECMAScript를 기반으로합니다.
- JQuery는 자바 스크립트 용 라이브러리입니다.
실제로 두 가지 질문을합니다.
- 제목은 자바 스크립트 구현 솔루션에 대해 설명합니다.
- 귀하의 질문은 JQuery 구현 솔루션에 대해 설명합니다.
Google 검색 결과에 귀하의 제목과 페이지의 모든 콘텐츠가 JQuery에 대해 언급되기 때문에 자바 스크립트 솔루션을 검색하는 사람들에게 매우 실망 스러울 수 있습니다.
그리고 이제 JQuery 솔루션 :
wp_enqueue_script( 'script-id', get_template_directory_uri() . '/js/script.js', array ( 'jquery' ), 1.1, true);
자바 스크립트 솔루션 :
wp_enqueue_script( 'script-id', get_template_directory_uri() . '/js/script.js', array(), '1.0.0', true );
이 코드는functions.php에 추가 할 수 있습니다. 두 경우 모두 스크립트의 위치는
입니다.wp-content/themes/theme-name/js/script.js
행복한 코딩!
To answer the question we must first make a distinction between javascript and JQuery.
To state it in a simple fashion:
- Javascript is based on ECMAScript
- JQuery is a library for Javascript
So in reality you ask two different questions:
- Your title speaks about a solution for implementing javascript
- Your question speaks about a solution for implementing JQuery
Because the Google results show your title and all the content of the page talks about JQuery this can become very frustrating to people that search for a javascript solution.
And now for the JQuery solution:
wp_enqueue_script( 'script-id', get_template_directory_uri() . '/js/script.js', array ( 'jquery' ), 1.1, true);
And the javascript solution:
wp_enqueue_script( 'script-id', get_template_directory_uri() . '/js/script.js', array(), '1.0.0', true );
This code can be added to your functions.php The location of the scripts in both cases is
wp-content/themes/theme-name/js/script.js
Happy coding!
-
OP가 게시되었을 때 개발자는jquery와javascript를 같은 의미로 사용했습니다.전혀 정확하지는 않지만jquery가 얼마나 인기가 있었고 자바 스크립트에 기능이 얼마나 빠졌는가였습니다.Around the time when OP posted, devs did use jquery and javascript interchangeably. It's not at all accurate, but it was how popular jquery was and how much javascript was missing features.
- 0
- 2020-04-29
- Rocky Kev
WooCommerce의 장바구니 버튼에 기본으로 사용되는 못생긴 화살표를 제거하고 싶습니다. 이를 위해 문서가로드 될 때 화살표를 제거해야하는 다음 코드를 추가하는 팁을 찾았습니다.
내functions.php에 넣을 것이라고 생각합니까? 정확히 어떻게해야합니까?
수정
알겠습니다. 이 방법을 시도했습니다 :
'removeArrows.js'라는 파일을 만들어 플러그인 폴더에 넣었습니다. 이것은 $ 대신jQuery를 제외하고 원본 코드와 동일한 내용을 가지고 있습니다. 그런 다음functions.php에 다음을 추가했습니다.
코드를 올바르게 표시하는 방법을 알 수 없습니다. 이것은 작동하지 않았습니다. 이 작업을 수행하기위한 제안 사항이 있습니까?
jQuery 스 니펫 소스