woocommerce 장바구니 총계화면에서 무료배송만 표시

  • 08 / 02 / 2017
  • by wpresso

우커머스의 카트 화면에 무료배송으로 넘어가는 금액이 되면 자동으로 배송란에 기본배송과 무료배송중 선택하는 옵션이 사용된다. 하지만 일정금액이 넘어서 자동으로 무료배송으로 넘어가는데 굳이 기본배송을 선택하는 옵션은….. 우선 설정하기 전에 우커머스 > 시스템상태 > 도구 > 만료된과도상태에서 트랜션트를 제거한 후 function.php에 아래의 코드 추가 [php] /** * Hide shipping rates when free shipping is available. * Updated to support WooCommerce 2.6 Shipping Zones. * * @param array $rates Array of rates found for the package. * @return array */ function my_hide_shipping_when_free_is_available( $rates ) { $free = array(); foreach ( $rates as $rate_id => $rate ) { if ( ‘free_shipping’ === $rate->method_id ) { $free[ $rate_id ] = $rate; break; } } return ! empty( $free ) ? $free : $rates; } add_filter( ‘woocommerce_package_rates’, ‘my_hide_shipping_when_free_is_available’, 100 ); [/php] 우커머스 버젼에 따라 코드가 차이가 있으며 위에 버튼에 원본링크에 보시면 버젼별 코드가 소개되어 있습니다.

워드프레스 custom body class

  • 27 / 03 / 2016
  • by wpresso

워드프레스로 사이트 구축시 특정 페이지의 바디테그에 클래스를 추가해야할 때가 있습니다. 이럴경우 플러그인이나 테마의 function 파일에 추가 [php] // by page slug function add_wpresso_body_class( $classes ) { if (is_page( ‘some-page’ )) { // by page slug //사용하는 Conditional Tags //is_page( ‘some-page’ ) // by page slug //is_page( ’12’ ) // by page id //is_category( ’12’ ) // by category id //is_category( ‘news’ ) // by category slug //is_tax( ‘sometax’ ) // by taxonomy $classes[] = ‘some-class’; } return $classes; } add_filter( ‘body_class’, ‘add_wpresso_body_class’ ); [/php]

워드프레스 홈페이지 제작 시 ie 버전 체크

  • 18 / 12 / 2015
  • by wpresso

워드프레스 제작 시 프로그램 개발 시 ie 7, 8, 9 버전들에서 호환성 문제들이 많이 발생합니다. jquery가 호환이 안되는 부분이 있을 수 있고 IE의 워낙에 방대한 버그로 인해서 크로스 브라우징 문제들도 발생되기 때문에 이런 경우 버전 별로 체크해서 jquery나 css를 커스텀해야 하는 경우가  자주 발생됩니다. 우선 php의 경우 preg_match를 이용하는 방법이 있고 [php] if(preg_match(‘/(?i)msie [7-8]/’,$_SERVER[‘HTTP_USER_AGENT’])){ // if IE<=8 include ( TEMPLATEPATH . ‘/something.php’ ); exit; }else{ // if IE>8 //출처 https://stackoverflow.com/a/5302437 } [/php] jquery를 이용한 방법은 [php] function isIE () { var myNav = navigator.userAgent.toLowerCase(); return (myNav.indexOf(‘msie’) != -1) ? parseInt(myNav.split(‘msie’)[1]) : false; //출처 https://stackoverflow.com/a/15983064 } [/php] 두가지 방법이 있습니다. 하지만 jquery나 php의 코드 변화에 신경쓸 필요 없이 Html Conditional 테그를 사용하는 것이 가장 안정적인 방법입니다. 워드프레스의 기본 컨디셔널 테그는 ie 7 or 8을 리턴 시켜주는 아래와 같은 코드인데 이것을 살짝 변경하면 문제 많은 ie9까지 포함 시킬 수 있습니다. 워드프레스 기본코드 [php] <!–[if IE 7]> <html class="ie ie7" <?php language_attributes(); ?>> <![endif]–> <!–[if IE 8]> <html class="ie ie8" <?php language_attributes(); ?>> <![endif]–> <!–[if !(IE 7) | !(IE 8) ]><!–> <html <?php language_attributes(); ?>> <!–<![endif]–> [/php] IE9까지 포함 하는 컨디셔널 테그 [php] <!–[if IE 7]> <html class="ie ie7 lte9" <?php language_attributes(); ?>> <![endif]–> <!–[if IE 8]> <html class="ie ie8 lte9" <?php language_attributes(); ?>> <![endif]–> <!–[if IE 9]> <html class="ie9 lte9" <?php language_attributes(); ?>> <![endif]–> <!–[if !(IE 7) | !(IE 8) | !(IE 9) ]><!–> <html <?php language_attributes(); ?> lang="ko"> <!–<![endif]–> [/php] 결과는 ie7 = ie ie7 lte9 ie8 = ie ie8 lte9 ie9 = ie9 lte9 를 html테그 클래스에 추가됩니다. jquery 사용예 [php] if ( $("html").hasClass("ie9") ){ //ie 9 } if( $("html").hasClass("lte9") ){ //ie 9이하 }; [/php] PHP 컨디셔널 테그 [php] echo "<!–[if lt IE 9]>"; echo("bed ie"); echo "<![endif]–>"; [/php]

워드프레스 포스트와 페이지 차이점

  • 19 / 12 / 2015
  • by wpresso

처음 워드프레스를 접하거나 워드프레스로 홈페이지를 제작하다보면 블로그에서 글쓰기로 작성되는 습관 때문에 좀 워드프레스의 메뉴 체계가 생소하게 느껴질 수 있습니다. 특히나 좌단에 복잡한 영문 단어들과 한글 버전에서 (post)글, page(페이지)로 번역이 된 것 때문에 좀 생소하게 느껴질 수 있는데 두개의 가장 큰 차이점은 포스트는 다양한 형식으로 리스트화 할 수 있다는 차이입니다. 다시말해 포스트는 분류 체계를 가지고 있다고 생각하시면 됩니다.   워드프레스가 처음부터 페이지 개념이 있던것은 아니었습니다. 초기에는 설치형 블로그 플랫폼이었던 만큼 포스트 개념만 있다가 v1.5부터 페이지라는 개념이 포함되었습니다. 아마도 홈페이지를 만들기 위해서는 페이지 개념이 필요 할 수 밖에 없었겠죠… 사실 페이지는 작성을 하고 메뉴에 등록하면 보여지는 단순하기 그지 없는 구조이지만 홈페이지를 제작 할 때 가장 펜시한 화면을 구성 할 수 있는 것이 페이지 입니다. 그에 반해 post는 뉴스나 혹은 제품을 카테고리로 분류해서 보여줄 때 처럼 Category, Custom Taxonomy, Term, Tag, Date, Author등으로 분류를 해서 작성을 할 수가 있고 페이지에 반해 일정 포멧을 필요로 하는 글들이기 때문에 그다지 펜시한 포멧보다는 규칙적인 디자인이 적용됩니다. 참고 : 워드프레스 history 8-Years of Screenshots: WordPress 0.7.1 to 3.2 Beta 2 Post Vs Page https://make.wordpress.org/support/user-manual/content/posts-vs-pages/   포스트와 페이지 당신의 블로그의 포스트와 페이지는 매우 중요한 차이점이 있다 Posts 포스트는 setting > leading에 세팅을 했다면 블로그 홈페이지나 포스트 페이지의 시간 역순으로 리스트업된 목록으로 정의 할 수 있다. Sticky post를 작성했다면 이포스트는 아른 포스트들 보다 이전(상위)에 나타나게 된다. 포스트는 archives, categories, recent posts 그리고 다른 widget에서 찾을수 있고 블로그의 rss feed에 보여지게 된다. 또한 setting > reading 에서 한번에 몇개의 포스트를 보여줄지 조절할 수 있다. 포스트의 URL은 포스트가 발행된 시간을 포함해서 발행된다. ex)https://blogname.wordpress.com/2008/11/30/post-title/ 당신의 홈페이지에서 다른페이지보다 포스트를 보여주고 싶으면 참조 Front Page. See Posts for more detailed information. ↑ Table of Contents ↑ Pages 페이지는 정적이면서 일자별로 리스트 되지 않고 페이지는 대게는 테그와 카테고리를 사용하지 않는다. 페이지는 페이지 위젯을 사용해서 사이드바에 노출 시킬수 있고 일부 테마에서는 블로그 상단의 페이지에 텝으로 보여진다. 만약에 당신이 50페이지를 가지고 있고 페이지 위젯을 사용한다면 모든페이지를 항상 리스트해서 보여줄수도 있다. 페이지의 url 은 이런식 https://blogname.wordpress.com/page-title/ 얼마나 많이 사용할 수 있나(페이지나 포스트) 페이지나 포스트는 숫자 제한이 없음 How do I post to a Page? 페이지에서 어떻게 포스트 보여줄 수 있나? All posts will appear on the main posts page, but you can also display specific posts on category pages with our custom menus feature. If you want, you can change the default page for posts to appear by changing Settings → Reading in the Dashboard. This will likely require changing yourFront page as well. 포스트는 메인 포스트 페이지에 보여줄수 있고 특정 포스트를 custom menu로 category page를 보여줄 수도 있다. […]

WordPress 4.3x 구글 크롬에서 관리단 좌단 메뉴 깨지는 현상

  • 17 / 09 / 2015
  • by wpresso

워드프레스 4.3이후 버전 사용자에게 최근 크롬 버그가 보입니다. 크롬 브라우저 세팅을 바꿀 수도 있는데 이후에 문제가 될 수 있어서 워드프레스에서 function을 추가하시길 추천 드립니다. 아래는 해당되는 코드며 테마의 function에 아래의 코드를 추가 하면 됩니다. [php] function chromefix_inline_css(){ wp_add_inline_style( ‘wp-admin’, ‘#adminmenu { transform: translateZ(0); }’ ); } add_action(‘admin_enqueue_scripts’, ‘chromefix_inline_css’); [/php]

워드프레스 모바일 감지 코드와 iphone접속시 body tag에 iphone class 추가하기

  • 14 / 09 / 2015
  • by wpresso

WordPress Mobile Detect Conditional Tag는 wp_is_mobile()입니다. 아래처럼 조건문 형식으로 테그를 작성해 사용하시면 됩니다. You should realize that this does not detect a mobile phone specifically, as a tablet is considered a mobile device. Check the Plugins area for several helpful alternatives. It also should not be used for themes. [php] < ?php if ( wp_is_mobile() ) { /* Display and echo mobile specific stuff here */ } ?> [/php] 하지만 워드프레스 작업을 하다보면 디바이스를 구분할 필요가 있을수 있는데 wp_is_moblie()는 파라이터를 받아들이지 않기 때문에 아래와 같은 코드로 body에 클래스를 추가해서 사용을 할 수 있습니다. [php] add_filter(‘body_class’, ‘my_iphonedetact_body_class’, 10, 2); function my_iphonedetact_body_class($classes) { $browser = strpos($_SERVER[‘HTTP_USER_AGENT’],"iPhone"); if ($browser == true){ $classes[] = ‘iphone’; } return $classes; } [/php] 디바이스별 키워드는 아래의 코드로 크롬 개발자 도구로 확인이 가능합니다. [php] add_filter(‘body_class’, ‘my_iphonedetact_body_class’, 10, 2); function my_iphonedetact_body_class($classes) { $browser = $_SERVER[‘HTTP_USER_AGENT’]; $classes[] = $browser; return $classes; } [/php] result – Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53

Email Address Encoder – 봇의 이메일 수집을 막아주는 워드프레스 플러그인

  • 02 / 03 / 2015
  • by wpresso

https://wordpress.org/plugins/email-address-encoder/ 워드프레스 사용시 이메일 입력란에 보여지는 이메일 주소를 로봇으로부터 검색되지 않도록 10진수 혹은 16진수로 encoding해 주는 플러그인 입니다. A lightweight plugin to protect plain email addresses and mailto links from email-harvesting robots by encoding them into decimal and hexadecimal entities. Has effect on the posts, pages, comments, excerpts and text widgets. No UI, no shortcode, no JavaScript — just simple spam protection. Email Address Encoder은 다른 설정이 없고 플러그인을 다운 받아 설치하기만 하면 포스트와 페이지, 댓글, 요약글, 택스트 위젯 등에 나타나지는 이메일을 [php]<a href="mailto:ja&#101;&#x79;&#x65;on&#103;&#x40;&#x75; &#x6e;is&#116;&#x2e;&#x61;c.&#107;&#x72;">&#x6a;a&#x65;&#x79; e&#x6f;&#110;g&#x40;&#117;n&#x69;s&#x74;&#x2e;a&#x63;&#46;k&#x72;</a>[/php] 와 같은 코드로 소스에 보여지게 됩니다. 또한 Custom post type 사용 시 플러그인에서 제공하는 eae_encode_str() function을 사용하면 됩니다. [php] // eae_encode_str() echo eae_encode_str(‘name@domain.com’); // ex <?php if( $m8 !==”){ echo (‘<a href="mailto:’ .eae_encode_str($m8).’">’.eae_encode_str($m8).'</a>’); } ?> [/php]

워드프레스에서 유투브 동영상 올리는 법 및 가로 세로 사이즈 맞추기

  • 26 / 01 / 2015
  • by wpresso

워드프레스 4.0 버니 버전부터 유투브 업로드가 간단하게 업데이트가 되었습니다. 브라우저의 URL만 Copy and Paste 혹은 Share의 embed 소스로 업로드가 가능합니다. URL은 상세한 사이즈 변경은 불가능지만 embed 소스의 경우는 가로와 세로 사이즈 변경이 가능한 차이점이 있습니다. 브라우저의 url입력 [php] /* youtube share source */ https://www.yoitube.com/watch?v=Q61wnopqonA /* youtube share source */ [/php] share > embed 소스 [php] /* youtube share source */ <iframe width="560" height="315" src="//www.youtube.com/embed/Q61wnopqonA&autoplay=1" frameborder="0" allowfullscreen></iframe> /* youtube share source */ [/php]

wpresso가 추천하는 워드프레스 필수 플러그인 모음

  • 23 / 01 / 2015
  • by wpresso

워드프레스로 홈페이지 제작 시 유용한 플러그인을 몇가지 소개합니다. 1. Jetpack by WordPress.com Jetpack은 Automattic의 여러가지 플러그인 팩이라고 보면됩니다. 그중에서도 몇가지 중요한 플러그인이 있는데 Akismet, WordPress Stats, Sharing, Widget Visibility, Subscriptions등을 들 수 있습니다. Stats는 물론 Google analytics를 연동하는 것이 가장 좋은 방법이기 하지만 간략하게 로그를 보기 위해서는 유용한 툴이고 Widget Visibility 위젯을 로긴 여부에 따라 혹은 Miscellaneous,Page, Custom Post Type, Category, Taxonomies별로 노출 여부를 정할 수 있습니다. 2. PHP Code Widget PHP Code Widget는 테마 소스 파일에 직접 PHP코드를 수정하지 않고 특정 페이지에 노출을 하고자 할때는 위젯에 PHP 코드를 입력하는 것이 효율적일 때가 있습니다. 이럴때 위젯을 적당한 환경에 노출시키고 PHP코드를 입력해서 사용합니다. 3. WordPress SEO by Yoast 포스트나 컨텐츠를 작성할때 SEO에 최적화 되도록 추가적인 세팅이 가능합니다. Title, Keyword, Meta description 등과 SNS 포워딩 택스트 세팅도 가능합니다. 4. Lightbox Plus Colorbox 몇가지 유용한 Lightbox 플러그인이 있는데 가장 유명했던 Fancybox가 지속적인 업데이트가 되지 않고 있기때문에 Lightbox Plus Colorbox를 추천합니다. 이 플러그인을 설치하고 나면 기본 세팅페이지가 Setting 그룹에 들어가있지 않고 Appearence 메뉴안에 들어있습니다. 다양한 스타일을 제공하고 있는점이 장점이며 Custom Style을 별도로 사용이 가능하고 스크립트를 Header/Footer영역에 지정해서 로딩할 수 있습니다. 5. Breadcrumb NavXT Breadcrumb NavXT는 Home > WordPress > Current Page 처럼 사용자 Location을 보여줍니다. 6. Contact Form 7 JetPack에서 제공하는 Contact From이 있지만 기능이 제한 적입니다. Contact Form 7은 다중 컨택폼 제작이 가능하며 Shortcode형태로 자유롭게 세팅이 가능합니다. 텍스트 필드, 이메일, URL, 전화번호, 숫자, 날짜, Text area, 드롭다운, 메뉴체크, 박스라디오, CAPTCHA파일 등 유동적으로 세팅이 가능하며 Ajax SUbmitting, CAPTCHA, Akismet 필터링등의 기능이 있습니다. 7. Advanced Custom Fields 워드프레스 홈페이지 제작 시 고급 세팅을 진행하기 위해서는 Post Type/Taxonomy와 Custom Field에 대한 이해가 있어야 합니다. ACF는 text, textarea, wysiwyg, image, file, page link, post object, relationship, select, checkbox, radio buttons, date picker등 다양한 Custom Field를 만들수 있는 툴이고 Custom Location Rules로 조건적으로 입력창을 Flexible하게 제작하도록 도와줍니다. 8. iThemes Security Better WP Security의 새버전 이름으로 30+의 다양한 방식으로 보안을 강화시켜 줍니다. 워드프레스는 플러그인의 취약점이나 유져 Password의 취약점으로 인해 공격의 타겟이 되기도 하는데 iThemes Security를 활성화 하면 유져 패스워드를 강화된 규칙으로 적용시킨다거나 wp-admin경로를 바꿔기도 하고 DB Name을 변경하는등의 기본적인 취약점에 대해 체크해줄 뿐만 아니라 그 이외에 보완점에 대해서도 간단한 설정으로 자동으로 설정이 가능하게 해줍니다.

워드프레스 포스트와 페이지의 차이점

  • 12 / 01 / 2015
  • by wpresso

워드프레스의 단어들이 우리가 지금까지 써왔던 포털의 블로그와는 또 다릅니다. 그래서 간혹 두 컨탠츠 간의 차이가 무엇이며 어떨때 사용을 하는지 궁금해 하시는 분들이 있는데 그 차이점에 대해서 간단하게 집고 넘어가도록 하겠습니다. 두 컨텐츠 간의 가장 큰 차이점은 Date 개념에 있습니다. 다시말해 포스트는 메인페이지나 포스트 리스트페이지에서 입력 순서대로 표시되는 컨텐츠를 말합니다. 다시 말해 시간(date)를 기준으로 리스트화 하는 컨텐츠를 말하며 작성시 Sticky post를 작성을 하면 이 포스트는 다른 컨텐츠 보다 운선되어 표시가 되고 RSS피드에 날짜 순으로 표시가 되어지도록 되어있습니다. 페이지는 정적인 페이지를 말하며 날짜별로 리스트가 되지는 않고 Tag나 Categories를 사용하지 않습니다. 그리고 페이지는 사이드바에 위젯영역에 위치 시킬수 있으며 외모 > 메뉴를 통해서 원하는 곳에 표시할 수 있습니다. 워드프레스는 페이지나 포스트 수의 제한이 없습니다.