结账时wp电子商务国家/地区列表

时间:2012-10-31 12:59:57

标签: php mysql wordpress wordpress-plugin e-commerce

好的我在http://sergedenimes.com/products-page/

有一家商店

它在wordpress上使用wp电子商务插件。我修改了主题文件以获得我想要的外观和布局,但有一天,另一个网站用户可以自由更新插件而无需备份文件,从而覆盖我的更改。

(我知道这不应该发生,我应该将主题文件放在不同的目录中,但这是一个不同的问题)

无论如何,幸运的是我设法将几乎所有的主题文件恢复到我的主题文件并且商店又回到原来的状态,除了一件事:在结帐页面上有一个下拉列表,用户选择他们的国家,所以商店可以计算运费。此下拉列表现在没有列出其中的国家/地区。我检查了结帐主题文件,它在正确的位置有<?php echo wpsc_shipping_country_list();?>标记。

为什么国家/地区列表不再包含选择的任何想法?我该如何解决?

(为了亲眼看看,您需要将至少一件商品添加到购物车并转到结帐处)

由于

编辑回答Marty的观点:

  • 总价格将始终包含运费 - 它是实物商品并且已添加运费。默认的运输国家/地区是英国,这就是它增加3.60英镑
  • 的原因
  • 不确定邮政编码盒。你能提供截图吗?对我而言,它没有提供邮政编码 - 它说“请选择下面的国家来计算您的运费”(应该如此)然后有一个下拉列表中没有选项可供选择。 (这是我的问题)。我在这里看不到文本字段,也不应该有文字字段。
  • 尽管可能在加拿大服务器上,该网站和公司是以英国为基础的,因此货币反映了这个
  • 感谢您的链接,虽然它似乎不包含解决方案。尝试停用/重新激活,现在购物车小部件中的结帐链接转到了错误的页面。

(确定购物车小部件链接问题,但国家/地区下拉列表仍然已损坏)

另一个编辑: 这是我整个结帐页面模板文件的粘贴框:http://pastebin.com/aGxqsTVt

更新: 所以我尝试检查核心文件中的查询,并将wp_前缀添加到表名中,没有运气。 仍然真的很挣扎,似乎更新搞砸了很多东西,包括商店现在展示的产品被保存为草稿。

任何建议都非常感谢。

好的,所以我在这里添加了一个php和mysql标签,因为我认为问题就在于此。

以下是我认为应该生成国家/地区列表的功能:

function wpsc_shipping_country_list( $shippingdetails = false ) {
global $wpdb, $wpsc_shipping_modules, $wpsc_country_data;
$js = '';
$output = '';
if ( !$shippingdetails ) {
    $output = "<input type='hidden' name='wpsc_ajax_actions' value='update_location' />";
    $js = "  onchange='submit_change_country();'";
}
$selected_country = (string) wpsc_get_customer_meta( 'shipping_country' );
$selected_region  = (string) wpsc_get_customer_meta( 'shipping_region'  );

if ( empty( $selected_country ) )
    $selected_country = esc_attr( get_option( 'base_country' ) );

if ( empty( $selected_region ) )
    $selected_region = esc_attr( get_option( 'base_region' ) );

if ( empty( $wpsc_country_data ) )
    $country_data = $wpdb->get_results( "SELECT * FROM `" . WP_WPSC_CURRENCY_LIST . "` WHERE `visible`= '1' ORDER BY `country` ASC", ARRAY_A );
else
    $country_data = $wpsc_country_data;

$acceptable_countries = wpsc_get_acceptable_countries();

$output .= wpsc_get_country_dropdown( array(
    'name'                  => 'country',
    'id'                    => 'current_country',
    'additional_attributes' => $js,
    'acceptable_ids'        => $acceptable_countries,
    'selected'              => $selected_country,
    'placeholder'           => '',
) );

$output .= wpsc_shipping_region_list( $selected_country, $selected_region, $shippingdetails );

if ( isset( $_POST['wpsc_update_location'] ) && $_POST['wpsc_update_location'] == 'true' ) {
    wpsc_update_customer_meta( 'update_location', true );
} else {
    wpsc_delete_customer_meta( 'update_location' );
}

$zipvalue = (string) wpsc_get_customer_meta( 'shipping_zip' );
if ( ! empty( $_POST['zipcode'] ) )
    $zipvalue = $_POST['zipcode'];

$zip_code_text = __( 'Your Zipcode', 'wpsc' );

if ( ( $zipvalue != '' ) && ( $zipvalue != $zip_code_text ) ) {
    $color = '#000';
    wpsc_update_customer_meta( 'shipping_zip', $zipvalue );
} else {
    $zipvalue = $zip_code_text;
    $color = '#999';
}

$uses_zipcode = false;
$custom_shipping = get_option( 'custom_shipping_options' );
foreach ( (array)$custom_shipping as $shipping ) {
    if ( isset( $wpsc_shipping_modules[$shipping]->needs_zipcode ) && $wpsc_shipping_modules[$shipping]->needs_zipcode == true ) {
        $uses_zipcode = true;
    }
}

if ( $uses_zipcode ) {
    $output .= " <input type='text' style='color:" . $color . ";' onclick='if (this.value==\"" . esc_js( $zip_code_text ) . "\") {this.value=\"\";this.style.color=\"#000\";}' onblur='if (this.value==\"\") {this.style.color=\"#999\"; this.value=\"" . esc_js( $zip_code_text ) . "\"; }' value='" . esc_attr( $zipvalue ) . "' size='10' name='zipcode' id='zipcode'>";
}
return $output;
}

2 个答案:

答案 0 :(得分:0)

好的,查看checkout.class.php文件的最新版本,dosnt似乎是使用$ wpdb-&gt;前缀你在数据库表上使用前缀吗?不只是wp_?

$country_data = $wpdb->get_results( "SELECT * FROM `" . WPSC_TABLE_CURRENCY_LIST . "` WHERE `visible`= '1' ORDER BY `country` ASC", ARRAY_A );

应该是什么样的?

$country_data = $wpdb->get_results( "SELECT * FROM `" . $wpdb->prefix.WPSC_TABLE_CURRENCY_LIST . "` WHERE `visible`= '1' ORDER BY `country` ASC", ARRAY_A );

检查phpmyadmin中的数据库结构,看看表名是否匹配?

[更新]是的,只需阅读安装文件并使用前缀, 但仍然检查以确保这些表中仍有数据?

答案 1 :(得分:0)

我更新时遇到了完全相同的问题。我发现问题的原因是从英国到英国的转变。确保你在管理员中使用英国而不是旧的英国,你的问题应该得到解决。

弗兰克。