也许我没有问对的问题,但我一定是错过了一些简单的东西。如果我在页面上放置一个体育分组,比如'NFL',那么我的短代码就会显示很好,但是当我添加第二个体育组时,让我说‘棒球’,生成的表在我下面提供的php文件成员结果函数中显示3种类型的数据($data_type=="current",$data_type=="past",$data_type=="detailed"),因为这个体育组不显示。此外,为第一组短代码生成的数据(在本例中为“NFL”)是从任何一组/运动中随机选择的。
我如何才能让所有这些简短的代码显示和加载每项运动的3种数据类型都在一个页面上,而不相互冲突?要查看页面本身发生了什么,您可以在登录后进入此处:使用临时用户名"test“https://wsplays-members.com/short-code-test/登录”密码“。作为参考,我将在下面显示我的代码。提前谢谢你。
在wordpress页面输入的短代码
[get_biddata type='current' sport='NFL Football']
[get_biddata type='past' sport='NFL Football']
[get_biddata type='detailed' sport='NFL Football']
[get_biddata type='current' sport='NCAA Football']
[get_biddata type='past' sport='NCAA Football']
[get_biddata type='detailed' sport='NCAA Football']
[get_biddata type='current' sport='CFL Football']
[get_biddata type='past' sport='CFL Football']
[get_biddata type='detailed' sport='CFL Football']
[get_biddata type='current' sport='NBA Basketball']
[get_biddata type='past' sport='NBA Basketball']
[get_biddata type='detailed' sport='NBA Basketball']
[get_biddata type='current' sport='NCAA Basketball']
[get_biddata type='past' sport='NCAA Basketball']
[get_biddata type='detailed' sport='NCAA Basketball']
[get_biddata type='current' sport='MLB Baseball']
[get_biddata type='past' sport='MLB Baseball']
[get_biddata type='detailed' sport='MLB Baseball']
php文件成员结果函数
<?php
function memberresults($sport_val,$data_type){
global $wpdb;
$bidsys_options = get_option('bidsys_options');
for($i=1;$i<11;$i++){
if($bidsys_options->sportsstatus[$i]!="Disabled"){
if($sport_val==$bidsys_options->sportsname[$i])
$sport = $i;
}}
$user = get_current_user_id();
$currentsportaccess = get_user_meta($user,"sport_".$sport ,true);
if($currentsportaccess=="No"){
?>
<div class="pmpro_content_message">Your access plan is valid but does not give you access to view this section.<br /> You may <a href="<?=home_url();?>/purchase/">purchase another access plan here</a>.</div>
<?php
} else {
if($data_type=="current"){
if (pmpro_hasMembershipLevel() ) {
?>
<script type='text/javascript'>
jQuery(document).ready(function(){
memberresults("current","<?php echo $sport;?>","");
});
</script>
<h1 class="post-title"><?php echo $sport_val; ?> Picks</h1>
<h2 class="post-title">Current Season</h2>
<table class='inner_result'>
<td colspan='5' >
<table id='member_<?=$data_type;?>season_vals_inner' class='hdr_3 inner_result'>
</table>
</td>
</table>
<?php
} else {
?>
<h1 class="post-title"><?php echo $sport_val; ?> Picks</h1>
<h2 class="post-title">Current Season Record</h2>
<div class="pmpro_content_message">You must be logged in to view this section. Please <a href="<?=home_url();?>/login/">log in</a> or <a href="<?=home_url();?>/register/">register here</a>.</div>
<?php
}
} else if($data_type=="past"){
if (pmpro_hasMembershipLevel() ) {
$result = "SELECT * FROM ".$wpdb->prefix."bidsys_sport_seasons WHERE sport= '".$sport."' AND current_season = 'NO' ORDER BY start_date DESC";
$newmeta = $wpdb->get_results($result);
?>
<script type='text/javascript'>
jQuery(document).ready(function(){
memberresults("past","<?php echo $sport;?>","season_<?php echo $newmeta[0]->id;?>");
});
</script>
<h1 class="post-title"><?php echo $sport_val; ?> Picks</h1>
<h2 class="post-title">Previous Seasons</h2>
<form action='' method='post' class="f_p_filter_frm outside_table">
<select name='f_p_filter' class="f_p_filter" onchange='memberresults("past","<?php echo $sport; ?>",this.value)' >
<?php $i = 0; foreach($newmeta as $seasons ){
if($i == 0){ $sel = 'selected=""'; } else { $sel = ""; }
?>
<option value='season_<?php echo $seasons->id;?>' <?php echo $sel;?>><?php echo $seasons->season_name;?></option>
<?php $i++; } ?>
</select>
</form>
<table class='inner_result'>
<td colspan='5' >
<table id='member_<?=$data_type;?>season_vals_inner' class='hdr_3'>
</table>
</td>
</table>
<?php
} else {
?>
<h1 class="post-title"><?php echo $sport_val; ?> Picks</h1>
<h2 class="post-title">Previous Seasons Records</h2>
<div class="pmpro_content_message">You must be logged in to view this section. Please <a href="<?=home_url();?>/login/">log in</a> or <a href="<?=home_url();?>/register/">register here</a>.</div>
<?php
}
} else if($data_type=="detailed"){
if (pmpro_hasMembershipLevel() ) {
?>
<script type='text/javascript'>
jQuery(document).ready(function(){
memberresults("detailed","<?php echo $sport;?>","yesterday");
});
</script>
<style>
.imgwin {
background: url('/wp-content/plugins/bid-sys/customgif/winningPick.gif');
height: 16px; width: 16px; margin:8px;
}
.imgloss {
background: url('/wp-content/plugins/bid-sys/customgif/losingPick.gif');
height: 16px; width: 16px; margin:8px;
}
.imgpush {
background: url('/wp-content/plugins/bid-sys/customgif/pushedPick.gif');
height: 16px; width: 16px; margin:8px;
}
</style>
<h1 class="post-title"><?php echo $sport_val; ?> Picks</h1>
<h2 class="post-title">Detailed History</h2>
<form action='' method='post' class="f_p_filter_frm outside_table">
<select name='f_p_filter' class="f_p_filter" onchange='memberresults("detailed","<?php echo $sport; ?>",this.value)' >
<?php
$result = "SELECT * FROM ".$wpdb->prefix."bidsys_sport_seasons WHERE sport= '".$sport."' AND current_season = 'NO' ORDER BY start_date DESC";
$newmeta = $wpdb->get_results($result);
foreach($newmeta as $seasons ){
?>
<option value='season_<?php echo $seasons->id;?>' ><?php echo $seasons->season_name;?></option>
<?php }
?>
<option value='playoftheday30' >Play of the Day (L30 Days)</option>
<option value='playoftheday365' >Play of the Day (L365 Days)</option>
<option value='latebreakingplay30' >VIP Late Info Play (L30 Days)</option>
<option value='latebreakingplay365' >VIP Late Info Play (L365 Days)</option>
<option value='vipplays30' >VIP Plays (L30 Days)</option>
<option value='vipplays365' >VIP Plays (L365 Days)</option>
<option value='yesterday' selected="">Yesterday</option>
<!--<option value='thisweek' >This Week</option>-->
<option value='past7days' >Past 7 Days</option>
<!--<option value='thismonth' >This Month</option>-->
<option value='past30days' >Past 30 Days</option>
<!-- <option value='thisyear' >This Year</option> -->
<option value='current' >Current Season</option>
<option value='past365days' >Past 365 Days</option>
</select>
</form>
<div style="width: 56px; float: right; background: #F8F8F8;"><img src="/wp-content/plugins/bid-sys/customgif/pushedPick.gif" /> Push</div><div style=" margin: -2px 3% 0; padding-bottom: 2px; float: right;">|</div>
<div style="width: 56px; float: right; background: #F8F8F8;"><img src="/wp-content/plugins/bid-sys/customgif/losingPick.gif" /> Loss</div><div style=" margin: -2px 3% 0; padding-bottom: 2px; float: right;">|</div>
<div style="width: 48px; float: right; background: #F8F8F8;"><img src="/wp-content/plugins/bid-sys/customgif/winningPick.gif" /> Win</div>
<table class='inner_result detailed_history'>
<tr class="hdr_2">
<td>Game Date</td>
<td colspan="2">Game/Pick Details</td>
<td>Result</td>
<td>Unit Change</td>
</tr>
<table id='member_<?=$data_type;?>season_vals_inner' class='hdr_3'>
</table>
</table>
<?php
} else {
?>
<h1 class="post-title"><?php echo $sport_val; ?> Picks</h1>
<h2 class="post-title">Detailed History</h2>
<div class="pmpro_content_message">You must be logged in to view this section. Please <a href="<?=home_url();?>/login/">log in</a> or <a href="<?=home_url();?>/register/">register here</a>.</div>
<?php
}
} else if($data_type=="pending"){
if (pmpro_hasMembershipLevel() ) {
?>
<script type='text/javascript'>
jQuery(document).ready(function(){
memberresults("pending","<?php echo $sport;?>","");
});
</script>
<h1 class="post-title">Today's <?php echo $sport_val; ?> Picks</h1>
<table id='member_<?=$data_type;?>season_vals_inner' class='hdr_3'>
</table>
<?php
}
} else if($data_type=="unauthorized"){
if (pmpro_hasMembershipLevel() ) {
?>
<h1 class="post-title">Today's <?php echo $sport_val; ?> Picks</h1>
<div class="members-only">
Picks posted here are for <strong>PAID MEMBERS ONLY</strong>.<br> Your current membership level is not authorized to view this section.</strong><br> <a href="<?=home_url();?>/subscription-options/">Click Here</a> to upgrade your membership and view today's <?php echo $sport_val; ?> picks.</p></div>
<?php
}
}
else if($data_type=="defaultMessage"){
if (pmpro_hasMembershipLevel() ) {
?>
<!--INTENTIONALLY LEFT BLANK SO WHEN A MEMBER LOGS IN THE MESSAGE BELOW DISAPPEARS-->
<?php
} else {
?>
<div class="loggedout-members-only">
<p>Picks posted here are for <strong>PAID MEMBERS ONLY</strong>.<br>
<a href="http://wsplays-members.com/login/">Log In</a> -<strong>or</strong>- <a href="http://wsplays-members.com/subscription-options/">View/Purchase Subscriptions Here</a>.</p>
<p><a href="http://wsplays-members.com/membership-account/membership-checkout/?level=23">Click Here</a> to register for <strong>FREE PICKS</strong> and gain <strong>FREE ACCESS</strong><br> to our Pick History & Detailed Records </p>
</div>
<?php
}
}
}
}
?>
php文件短代码
include('ajax_member_support.php');
function ajax_member_support( $atts ) {
extract( shortcode_atts( array(
'sport' => '',
'type' => '',
), $atts ) );
$sport_val = $sport;
$data_type = $type;
ob_start();
memberresults($sport_val,$data_type);
$output_string=ob_get_contents();;
ob_end_clean();
return $output_string;
}
add_shortcode('get_biddata', 'ajax_member_support');
Javascript文件
var memberresults =
function memberresults(seasontype, sport, seasonrange) {
"use strict";
var ajaxl = '<img src="/wp-content/plugins/bid-sys/customgif/ajax-loader.gif" alt="" />',
dataURL = "seasontype=" + seasontype + "&sport=" + sport + "&seasonrange=" + seasonrange;
jQuery("#member_" + seasontype + "season_vals_inner").html(ajaxl);
jQuery.ajax({
type: "POST",
url: "/wp-content/plugins/bid-sys/ajax_member.php",
data: dataURL,
success: function (msg) { // alert(msg);
jQuery("#member_" + seasontype + "season_vals_inner").html(msg);
}
});
};
发布于 2017-04-20 07:44:32
问题是插件创建了表id的member_currentseason_vals_inner
、member_pastseason_vals_inner
等。每个插件中的6个表示重复的id,而id的应该是唯一的!ajax将其结果放在它使用该id找到的第一个表中,因此所有结果都将进入“NFL足球”表。
您所看到的随机性是因为对于每个项目,成员结果都是通过ajax (异步的)分别获取的,即内容在到达浏览器时呈现。任何结果都可能是最后到达的,这就是您将在NFL表中看到的。
这可以用一个包装器来修复,作为js/jquery查找正确表的上下文,但是最好修复唯一的id。因为我不想让每个项目显示不止一次,所以我建议将php $sport
号附加到表id,并调整js来使用它。js会员制结果()已经接收到这个数字作为它的第二个参数。
在php成员结果函数中,更改以下一行,4次:
<table id='member_<?=$data_type;?>season_vals_inner' class='hdr_3 inner_result'>
至:
<table id='member_<?=$data_type;?>season_vals_inner<?=$sport;?>' class='hdr_3 inner_result'>
在javascript成员结果中,更改如下,2次:
jQuery("#member_" + seasontype + "season_vals_inner").html ...
至:
jQuery("#member_" + seasontype + "season_vals_inner" + sport).html ...
https://stackoverflow.com/questions/43478945
复制相似问题