[linux/mysql]워드프레스에서 원하는 php함수 만들어서 사용하는 방법

프로그래밍/서버2020. 2. 18. 22:51

워드프레스에서도 mysql db를 사용할 수 있으므로 데이터들은 db에 저장하고 php코드로 함수를 짜서.. db에 접근해서 값을 읽어오려고 합니다.

 

워드프레스는.. 일반적인 홈페이지는 아니기에 php파일을 만들어서 하나의 페이지를 구성되게 할 수는 없습니다.. 하려고 하면 할 수야 있겠지만.. 댓글을 달 수 있느 워드프레스의 페이지 안에서 특정 php 코드를 호출해야겠다는 생각이 들었습니다.

 

검색을 좀 해보니..

functions.php 라는 파일이 그 역할을 합니다.

functions.php는 테마에서 사용되는 파일인데 마치 플러그인처럼 동작해서 관리자 화면이나.. 유저가 방문하는 화면 모두에서 사용할 수 있다고 합니다.

 

제가 사용하는 Kleo 테마에선 관리자 화면 > Appearance > Editor에 가면 functions.php를 수정할 수 있습니다.

그런데 이 화면에서 수정을 하려고하니.. 아래의 에러가 발생했습니다. ㅡ.ㅡ;;

 

Unable to communicate back with site to check for fatal errors, so the PHP change was reverted. You will need to upload your PHP file change by some other means, such as by using SFTP.

 

SFTP를 이요해서.. 직접 업로드 해봐라.. 뭐 이런 에러입니다.

 

functions.php의 위치를 찾아보니 아래와 같습니다.

 

/opt/bitnami/apps/wordpress/htdocs/wp-content/themes/kleo-child/functions.php

 

경로를 보면 알 수 있는데 각 테마마다.. 고유한 파일로 존재하네요. ㅎㅎ

당연히 그래야 할 것 같습니다.

 

sftp로.. 수정한 functions.php를 업로드 하면 각 포스팅에서 그 함수를 사용할 수 있습니다.

 

흠.. 그리고 또 좀 주의해서 봐야할 부분이 변수의 인식 범위?입니다.

 

Variables inside a function are only available inside that function. Variables outside of functions are available anywhere outside of functions, but not inside any function. This means there's one special scope in PHP: the global scope. Any variable declared outside of any function is within this global scope. (read more)

 

함수 내부의 변수는.. 그 함수 안에서만 사용 가능합니다.(당연)

 

함수 밖의 변수는 함수 밖에서는 언제나 사용가능 하지만 함수 안에서는 사용할 수 없습니다.(헉!?)

이걸.. global scope라고 부른다고 하네요;;

 

흠.. 이를 주의해서 functions.php를 작성해야 겠습니다.

 

그런데 기본적으로.. 포스팅 내에서는 php코드를 사용할 수 없습니다.

plugin을 통해서.. 포스팅에서 php 코드를 사용할 것 같은데 좀 알아봐야겠네요;;

 

포스팅 내에서 사용해야하는 php 함수에.. 들어가는 인자가 다양하다면

plugin이 아니라 wordpress에서 지원하는 shortcode를 사용하는 게 좋을 것 같습니다.

 

function foobar_func( $atts ){
    $foo = $atts['foo'];
    $bar = $atts['bar'];
    
    //~~~~
}
add_shortcode( 'foobar', 'foobar_func' );

functions.php에 위와 같이 foobar_func를 작성합니다.

이 foobar_func를 foobar라는 shortcode로 등록합니다.

 

이렇게 shortcode로 등록이 되면 포스팅 화면에서

아래와 같은 방식으로 함수 호출이 가능합니다.

 

[myshortcode foo="bar" bar="bing"]

 

참고

https://www.wpbeginner.com/glossary/functions-php/

https://www.wpbeginner.com/plugins/how-to-allow-php-in-wordpress-posts-and-pages/

https://premium.wpmudev.org/blog/why-you-shouldnt-use-functions-php/

https://wordpress.stackexchange.com/questions/253492/variable-scope-in-wordpress-functions-php/253493#253493?newreg=6df98952c7444c2f8b52ef83fd175871

https://stackoverflow.com/questions/16331221/how-to-use-require-once-inside-function

https://codex.wordpress.org/Shortcode_API

 

 

작성자

Posted by 드리머즈

관련 글

댓글 영역