我目前正在组建一个WordPress网站,WooCommerce是电子商务功能的首选平台。
个人希望在产品页面上有一个字段,人们可以在其中输入自定义字词。此自定义单词将应用于页面上的产品。
此外,此自定义字段中的前16个字母将包含在产品价格中。因此,收费仅适用于前16个字母后的任何字母。
我假设这需要在functions.php文件中工作。
为实现这一目标,我需要遵循哪些关于所需编码或步骤的建议?
答案 0 :(得分:1)
我从未使用过WOOCOMERCE,问题是要求一个php解决方案,但由于这与客户端输入有关,我认为最好在客户端使用jquery进行验证然后将值传递给你php函数进入你的数据库
你可以在变化上运行ajax调用,这看起来有点过于密集 和PITA
$(document).ready(function() {
$("#basePrice").on('change', function(e){
$('#word').keyup();
})
$('#word').on('keyup', function(e) {
length = $(this).val().length;
$('#wordLength').html(length);
if(length>=16){
$('#wordLength').addClass('greater');
total = parseFloat($('#basePrice').val()) + parseFloat((length - 16) * $('#priceperletter').val()) ;
$('#total').val(total);
}
else {
$('#wordLength').removeClass('greater');
total = parseFloat($('#basePrice').val());
$('#total').val(total);
}
})
})
label{
display:block
}
.greater{
border:1px solid red;
}
.totalLabel,.totalLabel * {
font-weight:700;
font-size:18px;
}
.totalLabel input{
border:none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label>Base Price<input id="basePrice" value="10"/></label>
<label>Price per Letter over 16<input id="priceperletter" value = ".25"/></label>
<label>Enter your string<input id="word" type="text" /> <span id="wordLength"></span></label>
<label class="totalLabel" >Total $<input id="total" readonly value="10"/></label>
答案 1 :(得分:1)
PHP strlen() 函数用于统计字符串中的字符。 例如:
<?php
echo strlen('YourString'); //outputs 10
?>
<?php
$string='YourString';
echo strlen($string); //outputs 10
?>
更多信息请参考Crackpoint PHP strlen () tutorial
所以如果你想比较,你可以使用like
if (strlen($description) >= 16) ){
// more then 16 characters
// We need to charge the user
} else {
// N
您的解决方案
<?php
// If form is submitted
if (isset($_POST['description']) && !empty($_POST['description'])) {
// Form is submitted, check length
$description = trim($_POST['description']);
if (strlen($description) >= 16)) {
// more then 16 characters
// We need to charge the user
} else {
// Not more then 16 characters, continue.
}
}
?>
<html>
... Your other code here ...
<form method='POST' action="$_SERVER['PHP_SELF']">
<input type='text' name='description' />
<input type='submit' />
</form>
</html>
答案 2 :(得分:0)
由于这是一个非常通用的问题,我不能发表评论只发表答案,我会尝试在这里提供帮助。
if strlen($description >= 16) {
// more then 16 characters
// We need to charge the user
} else {
// Not more then 16 characters, continue.
}
W3Schools:https://www.w3schools.com/php/func_string_strlen.asp PHP站点:http://php.net/manual/en/function.strlen.php
根据以下评论。这是一个仅用于演示的模型。我不确定您的所有网站是如何设置的,所以我无法让它为您复制和粘贴。我不确定WooCommerce在付款方面是如何设置的。
<?php
// If form is submitted
if (isset($_POST['description']) && !empty($_POST['description'])) {
// Form is submitted, check length
$description = trim($_POST['description']);
if strlen($description >= 16) {
// more then 16 characters
// We need to charge the user
} else {
// Not more then 16 characters, continue.
}
}
?>
<html>
... Your other code here ...
<form method='POST' action="$_SERVER['PHP_SELF']">
<input type='text' name='description' />
<input type='submit' />
</form>
</html>
同样,这还没有准备好复制&amp;糊。我知道这个论坛上的人非常特别和评判,所以请注意它是一个模型。您将需要确保输入是安全和安全的等等。我不确定如何直接进入woocommerce,所以我道歉,如果这只是浪费你的时间。
这是我的第一个合法答案,很好。