게스트가 프로그래밍 방식으로 생성 한 Woocommerce (Wordpress 플러그인) 제품에 액세스 할 수 없음

블라드

저는 WordPress 3.9.1과 최신 버전의 WooCommerce (2.1.10)를 사용하고 있으며 사람들이 인보이스 번호와 금액을 입력하면 결제 페이지로 바로 이동하는 "인보이스 결제"페이지를 만들려고합니다.

내가 지금하고있는 방식 :

사람들이 금액을 입력하는 양식이있는 페이지가 있습니다.

<form action="#" onsubmit="location.href = 'http://protexfs.co/invoicepage/?date=' + this.elements.date.value; return false;">
<input type="text" name="date">
<input type="submit" value="Go">
</form>

제출 버튼은 동일한 금액의 Woocommerce 제품을 자동으로 생성하고 장바구니에 추가하고 자동으로 결제 페이지로 리디렉션하는 페이지로 연결됩니다 (모든 PHP 요구 사항에 대해 PHP 삽입 플러그인 사용).

[insert_php]
//empty cart
global $woocommerce;
$woocommerce->cart->empty_cart();
// Remove default cart message
$woocommerce->clear_messages();

//price
$invoiceprice = filter_input(INPUT_GET,"date",FILTER_SANITIZE_STRING);

//Generate title
$timestampedtitle = "Date: ".date("d/m/Y")." Amount: £".$invoiceprice;

//Generate message
$message = date_timestamp_get(date_create())." Date: ".date('m/d/Y h:i:s a', time())." Invoice amount: £".$invoiceprice;

$post = array(
'post_author' => '2',
'post_status' => "publish",
'post_title' => $timestampedtitle,
'post_content' => $message,
'post_parent' => '',
'post_type' => "product",
//'post_status' => 'private',
);

//Create post
$post_id = wp_insert_post( $post, $wp_error );
if($post_id){
$attach_id = get_post_meta($product->parent_id, "_thumbnail_id", true);
add_post_meta($post_id, '_thumbnail_id', $attach_id);
}
wp_set_object_terms($post_id, 'simple', 'product_type');
update_post_meta( $post_id, '_visibility', 'search' );
update_post_meta( $post_id, '_stock_status', 'instock');
update_post_meta( $post_id, '_virtual', 'yes');
update_post_meta( $post_id, '_regular_price', $invoiceprice );
update_post_meta( $post_id, '_sale_price', $invoiceprice );
update_post_meta( $post_id, '_purchase_note', "" );
update_post_meta( $post_id, '_featured', "no" );
update_post_meta( $post_id, '_weight', "" );
update_post_meta( $post_id, '_length', "" );
update_post_meta( $post_id, '_width', "" );
update_post_meta( $post_id, '_height', "" );
update_post_meta($post_id, '_sku', "");
update_post_meta( $post_id, '_product_attributes', array());
update_post_meta( $post_id, '_sale_price_dates_from', "" );
update_post_meta( $post_id, '_sale_price_dates_to', "" );
update_post_meta( $post_id, '_price', $invoiceprice );
update_post_meta( $post_id, '_sold_individually', "" );
update_post_meta( $post_id, '_manage_stock', "no" );
update_post_meta( $post_id, '_backorders', "no" );
update_post_meta( $post_id, '_stock', "" );
update_post_meta( $post_id, '_et_pb_page_layout', 'et_full_width_page' );

if( $woocommerce->cart ) {
     $woocommerce->cart->add_to_cart( $post_id, $quantity=1 );}

$url = $woocommerce->cart->get_checkout_url();
header("Location: $url");
[/insert_php]

로그인 한 상태에서는 완벽하게 작동하는 것 같습니다. 그러나 사용자가 로그인하지 않은 경우 제품이 계속 생성되지만 장바구니에 추가 할 수 없으며 다음 메시지가 표시됩니다. "죄송합니다.이 제품을 사용할 수 없습니다. 구매 한." (모든 것을 망친다).

이상한 점은 WooCommerce 인터페이스를 통해 만든 다른 모든 제품에 게스트가 액세스 할 수 있다는 것입니다 (따라서 공개적으로 사용 가능한 제품이 있고 프로그래밍 방식으로 가격을 변경하고 카트에 추가하면 작동하지만 문제가 발생합니다) 2 명이 동시에 버튼을 클릭 할 때).

물어보기 전에 WooCommerce 설정에서 비회원 결제를 활성화했습니다.

이 문제를 해결하는 방법에 대한 아이디어가 있습니까? (아니면 내 목표를 달성하는 완전히 다른 방법일까요?)

블라드

블라드

위의 의견에서와 같이이 문제를 해결하는 방법은 다음과 같습니다.

문제를 해결 한 방법은 ~ 50 개의 제품을 수동으로 생성하는 것이 었습니다 (따라서 사용자가 액세스 할 수 있음). 사용자가 새 송장을 생성 할 때마다 (텍스트 필드에 값을 입력하고 확인을 누를 때) 제품 중 하나가 무작위로 선택되고 해당 가격이 입력 된 값으로 변경됩니다. 이렇게하면 사용자가 제품에 액세스 할 수 있으며 여러 사람이 동시에 "확인"버튼을 클릭해도 엉망이되지 않습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관