워드프레스 테이블양식 플러그인

워드프레스 테이블양식 플러그인

워드프레스 게시물 테이블

기본 글은 블로그, 매거진등의 여러가지 쓰임새로 사용됩니다. 한국형 게시판과는 성격이 약간 다르게 사용됩니다.

커스텀포스트 타입의 성격으로 동작해야 여러가지 플러그인과 공생관계를 유지할 수 있는데

한국형 게시판은 완벽하게 동작하지는 않습니다.

워드프레스 글을 테이블 형태로 출력하는 플러그인을 사용해서 타협점을 찾아 볼 수 있을겁니다.

CSS로 구성은 가능하지만 분류의 필터나 여러가지 기능을 한번에 사용하려면 여간 귀찮은게 아닙니다만

쇼핑몰, 매거진등에서 유용한 활용 방법입니다.

 

우커머스 제품 테이블 리스트

 

 

쇼핑몰은 가끔 한꺼번에 상품을 많이 노출하고 한번에 구매할 수 있는 기능이 필요합니다.

유통업이나 도매쇼핑몰의 경우 상세페이지 보다는 제품단가가 더 중요한 쇼핑몰인 경우 활용할 수 있습니다.

 

기능목록


제품 테이블보기 또는 목록

WooCommerce 테이블 플러그인을 사용하여 테이블 뷰 또는 목록에 WooCommerce 제품을 표시하십시오. 모든 제품에 대한 표를 만들거나 각 범주에 대해 표를 분리하십시오.

 

필터 위젯

WooCommerce에서 사용되는 필터 위젯의 전체 세트를 포함합니다. 고객은 특성, 가격 또는 등급별로 테이블을 필터링 할 수 있습니다.

 

제품 속성 및 변형

속성을 열 또는 필터로 표시하거나 변형을 표시하는 3 가지 방법 중 하나를 선택하십시오. 사용자는 대안을 선택하고 장바구니에 추가 할 수 있습니다.

 

사용자 정의 필드 지원 및 ACF

사용자 정의 필드를 제품 테이블의 열로 표시하십시오. 고급 사용자 정의 필드와 완벽하게 통합됩니다. 추가 데이터, 링크 등을 추가하십시오.

 

맞춤 분류(택사노미) 지원

맞춤 분류를 표시하고 맞춤 용어로 필터링하며 특정 분류 용어가있는 제품을 나열하는 표를 만듭니다.

 

장바구니에 추가 버튼

고객은 수량을 선택하여 카트에 직접 제품을 추가하거나 클릭하여 제품 페이지를 볼 수 있습니다. 궁극적 인 1 페이지 WooCommerce 주문 양식입니다!

 

여러 제품 선택

각 제품 옆에 확인란을 표시하여 고객이 신속하게 여러 제품을 장바구니에 신속하게 추가 할 수 있습니다.

 

제품 이미지

WooCommerce 제품 디스플레이 플러그인으로 모든 크기와 열의 WooCommerce 제품 이미지를 표시하십시오.

 

세밀한 제어

범주, 태그, ID, 상태, 날짜 또는 작성자를 기반으로 제품을 나열하는 테이블을 만듭니다. 카테고리 또는 개별 제품을 제외하십시오.

 

레이지로드

대형 제품 테이블의 경우 AJAX가 한 번에 한 페이지 씩 제품을로드하여 서버로드를 줄이고 성능을 향상시킬 수 있습니다.

 

반응형 테이블

휴대 전화에서는 열이 자동으로 ‘접히고’확장되어 데이터를 표시 할 수 있습니다. WooCommerce 제품 목록 플러그인을 사용하여 어떤 열 우선 순위를 선택할 수 있습니다.

 

빠른 검색, 정렬 및 필터

키워드를 입력하고 즉석 검색을 수행하십시오. 제품 표를 필터링하거나 열 표제를 클릭하여 정렬 할 수 있습니다.

 

AJAX 장바구니에 담기

제품은 AJAX를 사용하여 장바구니에 추가되며 페이지는 새로 고침되지 않습니다. 이를 통해 고객은 신속하게 구매할 수있어 이탈률을 줄입니다.

 

엄청나게 유연한

수십 개의 제품 표 옵션을 사용하여 표 요소를 표시하거나 숨기고, 열 머리글을 변경하고, 페이지 길이를 설정하는 등 다양한 작업을 수행 할 수 있습니다.

 

 

워드프레스 쇼핑몰 POS & 바코드

워드프레스 쇼핑몰 POS & 바코드

우커머스 포스 ( Point of sale )

  1. 레스토랑, 식당
  2. 온/오프라인 매장 통합 관리

 

우커머스 바코드, 스캐너, 바코드 프린트

  1. 우커머스 바코드 생성 플러그인 : 상품별 바코드 생성
  2. Dymo 우커머스 바코드 프린터
  3. 바코드 스캐너
  4. 우커머스 포스

 

  • 매장 및 유통회사에서 재고관리 또는 온/오프라인 쇼핑몰을 간단히 통합할 수 있다.

 

ERP가 필요하지 않는가?

  1. 우커머스는 ERP와 통합할 수 있다.
  2. SAP등 인지도가 있는 ERP와 재고등을 연동할 수 있다.

 

  • 불과 몇년전만 해도 쇼핑몰도 간신히 구동하는 워드프레스 쇼핑몰이 이제는 모바일까지도 충분한 속도가 나오면서 다양한 활용을 시도 하고 있다.
  • 우커머스를 이용한 재고 관리등 시스템은 기존 시스템에 비해 훨씬 저렴하게 도입할 수 있다.
  • 아이패드 및 아이폰과 연동해서 POS를 연동하면 훌륭한 시스템이 될 수 있다.

 

 

카카오톡 플러스친구를 통해 홍보채널 만들기

카카오톡 플러스친구를 통해 홍보채널 만들기

 

 

 

카카톡 플러스친구

첫 서비스는 카카오톡 옐로페이지였습니다. 카카오톡의 친구들을 통해 기업등 홍보채널을 만들수 있는 카카오톡의 기업용 버전입니다.

모바일 홈페이지를 통해 카카오톡의 플러스친구등록, 1:1채팅, 소식받기등 마케팅채널로 좋은 도구입니다.

요즘은 인스타그램이 비즈니스도구로 좋은 소셜 마케팅도구이지만, 그것으로 부족할때 카카오톡 플러스친구도 함께 이용할 수 있겠네요.

기능

메세지/ 1:1채팅/ 스마트채팅/ 친구관리/ 홍보용 도구 사용하기

 

 

 

워드프레스 4.8의 IE8,9,10 지원종료

워드프레스 4.8의 IE8,9,10 지원종료

워드프레스 4.8의 IE8,9,10 지원종료

IE8 즉, 윈도우xp를 사용하는 PC의 접속은 거의 없습니다.

그렇지만 IE10을 사용하는 PC는 한국에서는 제법 많은것으로 보입니다.

Windows 7에서 보안 업데이트를 하지 않고 유지하면 IE10을 사용하게 됩니다.

 

어떤 의미가 될까?

보안에 취약한 브라우저는 배제 하겠다는? 의미 일까요?

자연스럽게 세계적인 접속통계를 보게 되면 Windows 7 서비스팩2이상 Windows 10으로 환경이 바뀌었다 라고 볼 수 있을것 같습니다.

 

한국에서는…

아직까지 기관들(관공서, 유치원, 어린이집, 은행, 중소기업)은 Windows 7에서 IE10을 사용한다면

워드프레스 4.8로 업그레이드를 미뤄야 할것 같네요.

 

예정되는 업그레이드

Php 5.6의 권장 환경도 Php 7.0 이상으로 변경될거란 예고가 있습니다.

Mysql도 5.x 이상과 최소 MariaDB가 사용되어야 할것 같네요.

 

 

워드프레스 인젝션 멀웨어 경고

워드프레스 인젝션 멀웨어 경고

WordPress의 컨텐츠 주입 취약점

보안 위험 : 심각

착취 수준 : 쉬운 / 원격

드레드 점수 : 9/10

취약점 : 권한 상승 / 내용 주입

패치 된 버전 : 4.7.2

Sucuri Firewall (WAF) 의 취약성 연구 프로젝트의 일환 으로 보안 문제를 찾는 여러 오픈 소스 프로젝트를 감사했습니다. WordPress에서 작업하면서 REST API에 영향을 미치는 심각한 콘텐츠 삽입 (권한 상승) 취약점을 발견했습니다. 이 취약점으로 인해 인증되지 않은 사용자 는 WordPress 사이트 내의 모든 게시물이나 페이지의 내용수정할 수 있습니다.

우리는 WordPress Security Team에 취약점을 공개하여 매우 잘 처리했습니다. 그들은 우리와 긴밀히 협력하여 공개 일정을 조정하고 공개하기 전에 많은 호스트 및 보안 공급자가이를 인식하고 패치하도록했습니다.

이것에 대한 수정 사항은 다른 덜 심각한 문제와 함께 버전 4.7.2 에 자동으로 포함되었습니다 . 이것은 모두에게 패치 할 시간을주기 위해 의도적으로 수행되었습니다. 우리는 대부분의 WordPress 사용자가 사이트를 업데이트 할 충분한 시간이 있었기 때문에 세부 정보를 공개합니다.

 

이 권한 상승 취약점 은 최근에 추가되어 WordPress 4.7.0에서 기본적으로 활성화 된 WordPress REST API 에 영향을줍니다 .

이러한 REST 엔드 포인트 중 하나는 API를 통한 액세스를 통해 게시물을보고, 편집하고, 삭제하고 작성합니다. 이 특정 엔드 포인트 내에서 미묘한 버그로 방문자가 사이트의 모든 게시물을 편집 할 수 있습니다 .

나머지 API는 워드 프레스 사용하는 모든 사이트에서 기본적으로 활성화되어 4.7.0 또는 4.7.1 . 귀하의 웹 사이트가 이러한 버전의 WordPress에있는 경우 현재이 버그에 취약합니다.

기술적 세부 사항

우리의 여정은 시작됩니다. /wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php

여기서 주목해야 할 몇 가지 점이 있습니다. 등록 된 경로는 ID 요청 매개 변수에 숫자 를 채우도록 설계되었습니다 . 당신이에 요청 전송하는 경우 예를 들어,  / WP-JSON / WP / V2 / 글 / 1234 – ID의 매개 변수로 설정 될 것이다  1234 .

이 동작만으로 공격자가 악의적 인 ID 값 을 만드는 것을 방지 할 수있는 좋은 방법 일 수 있지만 REST API가 액세스를 관리하는 방법을 살펴볼 때 경로의 정규 표현식에 의해 생성 된 값보다 $ _GET$ _POST 값이 우선적으로 우선 함을 발견했습니다. 이렇게하면 공격자가 / wp-json / wp / v2 / posts / 1234? id = 12345helloworld 와 같은 요청을 보낼 수 있습니다.   이는 ID 매개 변수 에 12345helloworld 를 할당 합니다.

더 자세히 살펴보면 위의 스크린 샷에서 다양한 콜백을 살펴 보았습니다. 하나는  update_item 과 update_item_permissions_check의 권한 검사 메소드  입니다 .

즉, 우리의 영숫자 ID 값을 get_post () 함수에 직접 전달 합니다. 이 함수 는 게시물이 실제로 존재 하는지 여부  와 사용자가이 게시물을 편집 할 권한이 있는지 여부확인 하여 요청의 유효성을 검사합니다 . 우리는 이것이 이것이 요청을 위생적으로 정리하는 흥미로운 방법이라는 것을 알았습니다. 해당 게시물이없는 ID 를 보내면 권한 검사를 통과하고 update_item 메소드 에 대한 요청을 계속 실행할 수 있습니다 !

( 존재하지 않는 ID 가 아닌) 게시물을 찾을 때 get_post () 가 실패  할 수 있다는 점이 궁금하다면 wp_postsget_instance () 정적 메서드를 사용하여 게시물 을 가져 오는 것을 알게  되었습니다.

코드에서 볼 수 있듯이 기본적으로 모든 숫자로 이루어진 입력이 아닌 경우 실패합니다. 따라서 123ABC 가 실패합니다.

공격자의 경우 WordPress는이 게시물을 편집 할 충분한 권한이있는 사용자라고 생각하면 update_item 메서드 가 실행  됩니다.

이 방법이 무엇인지 확인하는 것이 합리적이라고 생각했습니다.

그 마지막 스크린 샷에는 매우 미묘하면서도 중요한 세부 사항이 있습니다. WordPress는 get_post에 전달하기 전에 ID 매개 변수를 정수  로 변환합니다 !

이는 PHP가 유형 비교 및 ​​변환을 수행하는 방식 때문에 문제가됩니다. 예를 들어 다음 스 니펫 이 123을 반환 한다는 것을 알 수 있습니다 .

이로 인해 공격자가 / wp-json / wp / v2 / posts / 123? id = 456ABC 와 같은 요청을 제출하여 ID가 456 인 게시물  을 변경할 수있는 매우 위험한 상황이 발생합니다  !

이러한 유형의 저글링 문제 로 인해 공격자 는 피해 사이트에서 게시물이나 페이지 의 내용을 변경할 수  있습니다. 거기에서 플러그인 별 단축 코드를 추가하여 취약성 (참여자 역할로 제한되는)을 악용하거나, 사이트 콘텐츠를 SEO 스팸 캠페인으로 감염 시키거나, 광고 등을 삽입 할 수 있습니다.

사이트에서 사용할 수있는 플러그인에 따라 PHP 코드조차도 매우 쉽게 실행될 수 있습니다.

결론적으로

웹 사이트에서 자동 업데이트를 활성화하지 않은 경우 가능한 한 빨리 업데이트하십시오!

이 취약점은 여러 가지 방법으로 악용되어 취약한 사이트를 손상시킬 수있는 심각한 취약점입니다. 지금 업데이트하십시오!

우커머스-카트 확인후 조건부 체크아웃

우커머스-카트 확인후 조건부 체크아웃

Product Specific Conditional

/** * Check if a specific product ID is in the cart */ function wc_ninja_product_is_in_the_cart() { // Add your special product IDs here $ids = array( ’45’, ’70’, ’75’ );; // Products currently in the cart $cart_ids = array(); // Find each product in the cart and add it to the $cart_ids array foreach( WC()->cart->get_cart() as $cart_item_key => $values ) { $cart_product = $values[‘data’]; $cart_ids[] = $cart_product->id; } // If one of the special products are in the cart, return true. if ( ! empty( array_intersect( $ids, $cart_ids ) ) ) { return true; } else { return false; } }

 

/**
* Conditionally remove a checkout field based on products in the cart
*/
function wc_ninja_remove_checkout_field( $fields ) {
if ( ! wc_ninja_product_is_in_the_cart() ) {
unset( $fields[‘billing’][‘billing_company’] );
}

return $fields;
}
add_filter( ‘woocommerce_checkout_fields’ , ‘wc_ninja_remove_checkout_field’ );

 

Product Category Conditional

 

/**
* Check if a specific product category is in the cart
*/
function wc_ninja_category_is_in_the_cart() {
// Add your special category slugs here
$categories = array( ‘clothing’, ‘posters’ );

// Products currently in the cart
$cart_ids = array();

// Categories currently in the cart
$cart_categories = array();

// Find each product in the cart and add it to the $cart_ids array
foreach( WC()->cart->get_cart() as $cart_item_key => $values ) {
$cart_product = $values[‘data’];
$cart_ids[] = $cart_product->id;
}

// Connect the products in the cart w/ their categories
foreach( $cart_ids as $id ) {
$products_categories = get_the_terms( $id, ‘product_cat’ );

// Loop through each product category and add it to our $cart_categories array
foreach ( $products_categories as $products_category ) {
$cart_categories[] = $products_category->slug;
}
}

// If one of the special categories are in the cart, return true.
if ( ! empty( array_intersect( $categories, $cart_categories ) ) ) {
return true;
} else {
return false;
}
}

 

Coupon Conditional

 

/**
* Check if a specific coupon was used
*/
function wc_ninja_coupon_was_used() {
// Add a list of coupons to check for here.
$coupons = array( ‘percent_coupon’, ‘free_shipping’ );

// Coupons Used
$coupons_used = WC()->cart->applied_coupons;

// If ones of our special coupons were used, return true.
if ( in_array( $coupons, $coupons_used ) ) {
return true;
} else {
return false;
}
}