У меня есть страница, которая отображает информацию о моих участниках из базы данных SQL. У меня есть вывод в виде шорткода, но информация отображается над содержимым страницы, даже если шорткод находится в самом низу текстового редактора. Я знаю, что проблема в том, что этот код эхом возвращается, а не возвращается, но я новичок в php и мне нужна помощь с синтаксисом.
function listMembers() {
$sql1=mysql_query("select state_id,state_name from ".TABLE_STATE);
while($row1=mysql_fetch_assoc($sql1))
{
?> <a href="#" onclick="getDetails(
<?php echo $row1["state_id"];?>)"> <?php echo $row1["state_name"]; ?>
Вот весь код
$sql1=mysql_query("select state_id,state_name from ".TABLE_STATE);
while($row1=mysql_fetch_assoc($sql1))
{
?> <a href="#" onclick="getDetails(<?php echo $row1["state_id"];?>)"> <?php echo $row1["state_name"]; ?> </a> <?php
}
?><br/><br/><div id="resultDiv"></div><?php
}
add_shortcode('memberlist', 'listMembers');
function listRescueStandards() {
$display_members = '';
$sql = mysql_query("SELECT vc.*, s.*, m.*
FROM ".TABLE_COMPLIANCE." vc, ".TABLE_STATE." s, ".TABLE_MEMBERS." m
WHERE vc.member_id = m.cid
AND m.status = '1'
AND m.state = s.state_abbr
ORDER BY m.state, m.organization ASC");
while ($row = mysql_fetch_array($sql)) {
$organization = stripslashes($row['organization']);
if ($row['website']) {
$link = "<a href='http://".$row['website']."' target='_blank'>";
$endlink = "</a>";
} else {
$link = "";
$endlink = "";
}
if($x!=$row['state_name']){
$display_members .= "<br /><strong>".strtoupper($row['state_name'])."</strong><br />";
$x = $row['state_name'];
}
$display_members .= $link.$organization.$endlink."<br />
".stripslashes($row['address'])." ".stripslashes($row['address2'])."<br />
".stripslashes($row['city']).", ".stripslashes($row['state'])." ".$row['zip']."<br />";
if ($row['contact_name']) $display_members .= "Contact: ".stripslashes($row['contact_name']);
if ($row['contact_title']) $display_members .= ", ".stripslashes($row['contact_title']);
if ($row['phone']) $display_members .= "<br />Tel: ".stripslashes($row['phone']);
if ($row['fax']) $display_members .= "<br />Fax: ".stripslashes($row['fax']);
if ($row['email']) $display_members .= "<br />".$row['email'];
if ($row['website']) $display_members .= "<br /><a href='http://".$row['website']."' target='_blank'>".$row['website']."</a>";
if ($row['year_est']) $display_members .= "<br />Founded in ".$row['year_est'].".";
if ($row['org501c3'] == "1") $display_members .= "<br />This organization IS registered with the IRS as a 501(c)3.";
if ($row['org501c3'] != "1") $display_members .= "<br />This organization is NOT registered with the IRS as a 501(c)3.";
$display_members .= "<br /><br />";
}
return "<div class='memberlist'>" . $display_members . "</div>";
}
add_shortcode('standardslist', 'listRescueStandards');
?>
Заранее спасибо за вашу помощь! Я ценю всех, кто смотрит на это, и если вам нужны разъяснения, пожалуйста, дайте мне знать!
Ах хорошо. в соответствии с шорткоды API Вы хотите возвращать значение, а не повторять его. ты можешь использовать выходная буферизация преобразовать echo
тип кода для return
тип. Это влечет за собой просто обертывание всех ваших echo
заявления в ob_start()
а также ob_end_clean()
function listMembers() {
$sql1=mysql_query("select state_id,state_name from ".TABLE_STATE);
ob_start(); //send all future echo statements to the buffer instead of output
while($row1=mysql_fetch_assoc($sql1))
{
?> <a href="#" onclick="getDetails(<?php echo $row1["state_id"];?>)"> <?php echo $row1["state_name"]; ?> </a> <?php
}
?><br/><br/><div id="resultDiv"></div><?php$result=ob_get_clean(); //capture the buffer into $result
return $result; //return it, instead of echoing
}
Других решений пока нет …