Я довольно новичок в PHP, и я учил себя в основном, редактируя файлы на тестовом сайте, который является дубликатом нашего живого сайта. Мы хотим обновить наш сайт WordPress и все наши плагины, потому что он устарел почти на 6 лет. Человек, который сделал сайт, добавил много пользовательского кода, не создавая дочернюю тему, поэтому я продублировал живой сайт и обновил все. Теперь нужно сделать несколько настроек, чтобы сохранить функциональность, которая была у нас раньше. Все эти изменения сделаны за исключением этого последнего файла PHP.
Я уже десятком раз просматривал файл, но нигде не смог найти открытую скобку. Я попытался протестировать, удалив несколько разделов и используя функцию PSPad, чтобы найти подходящую скобку, но я продолжаю получать ту же ошибку. Одна из моих проблем заключается в том, что файл использует операторы if с: иногда, но в других случаях он использует {}. Может ли это вызвать путаницу на сервере?
Я понимаю, что этот файл довольно большой, но если у кого-нибудь есть какой-либо совет или помощь, которую он может предоставить, я буду очень признателен. Спасибо за ваше время.
РЕДАКТИРОВАТЬ
Я опубликовал мой пересмотренный код, в котором я нашел несколько пропущенных операторов if, а также несколько пропущенных и лишних операторов endif. Спасибо вам обоим, кто помог мне найти их.
<?php
/**
* Property Default Template for Single Property View
* Modified by RJA for APM
* Overwrite by creating your own in the theme directory called either:
* property.php
* or add the property type to the end to customize further, example:
* property-building.php or property-floorplan.php, etc.
*
* By default the system will look for file with property type suffix first,
* if none found, will default to: property.php
*
* Copyright 2010 Andy Potanin <[email protected]>
*
* @version 1.3
* @author Andy Potanin <[email protected]>
* @package WP-Property
*/
// Uncomment to disable fancybox script being loaded on this page
//wp_deregister_script('jquery-fancybox');
//wp_deregister_script('jquery-fancybox-css');
?>
<?php get_header(); ?>
<?php the_post(); ?>
<script type="text/javascript">
var map;
var marker;
var infowindow;
jQuery(document).ready(function() {
if(typeof jQuery.fn.fancybox == 'function') {
jQuery("a.fancybox_image, .gallery-item a").fancybox({
'transitionIn' : 'elastic',
'transitionOut' : 'elastic',
'speedIn' : 600,
'speedOut' : 200,
'overlayShow' : false
});
}
if(typeof google == 'object') {
initialize_this_map();
} else {
jQuery("#property_map").hide();
}
});
function initialize_this_map() {
<?php if($coords = WPP_F::get_coordinates()) : ?>
var myLatlng = new google.maps.LatLng(<?php echo $coords['latitude']; ?>,<?php echo $coords['longitude']; ?>);
var myOptions = {
zoom: <?php echo (!empty($wp_properties['configuration']['gm_zoom_level']) ? $wp_properties['configuration']['gm_zoom_level'] : 13); ?>,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("property_map"), myOptions);
infowindow = new google.maps.InfoWindow({
content: '<?php echo WPP_F::google_maps_infobox($post); ?>',
maxWidth: 500
});
marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: '<?php echo addslashes($post->post_title); ?>',
icon: '<?php echo apply_filters('wpp_supermap_marker', '', $post->ID); ?>'
});
google.maps.event.addListener(infowindow, 'domready', function() {
document.getElementById('infowindow').parentNode.style.overflow='hidden';
document.getElementById('infowindow').parentNode.parentNode.style.overflow='hidden';
});
setTimeout("infowindow.open(map,marker);",1000);
<?php endif; ?>
}
</script>
<div id="container" class="<?php echo (!empty($post->property_type) ? $post->property_type . "_container" : ""); ?>">
<div id="content" role="main" class="property_content">
<div id="post-<?php the_ID(); ?>"<?php post_class(); ?>>
<div class="building_title_wrapper">
<?php if ($post->property_type == 'building') : ?>
<h1 class="property-title entry-title"><?php echo $post->building_name;
endif;
?></h1>
<?php
// Define Retail Address - JC
$RetailAddress = explode(' ',$post->address);
$RetailAddress1 = explode(',',$RetailAddress[3]);
$RetailAddress = $post->suite." ".$RetailAddress[1]." ".$RetailAddress[2]." ".$RetailAddress1[0];
// Define Mytype - JC
$mytype = " (".ucwords($post->property_type).")";
// Define Childname - JC
switch($post->property_type) {
case 'office':
$childname = "Suite ".$post->suite.$mytype;
break;
case 'industrial':
$childname = "Space ".$post->suite.$mytype;
break;
case 'retail':
$childname = $RetailAddress." ".$mytype;
break;
}
?>
<h1 class="property-title entry-title"><?php echo $childname; ?></h1>
</div>
<div class="entry-content">
<div class="wpp_the_content"><?php @the_content(); ?></div>
<?php if ($post->property_type<>'building') : ?>
<div class="wpp_the_content"><a href="<?php echo $post->parent_link; ?>"><b><?php echo $post->parent_title; ?></b></a></div>
<br>
<?php endif; ?>
<?php if ( empty($wp_properties['property_groups']) || $wp_properties['configuration']['property_overview']['sort_stats_by_groups'] != 'true' ) : ?>
<?php endif; ?>
<!-- The line below paints the list of attributes -->
<?php
if($property['property_type']=='building')
//@draw_stats("make_link=true&exclude=area,property_no,available,city,building_type&sort_by_groups{$wp_properties['configuration']['address_attribute']}");
{echo @draw_stats('display=list&class=property_stats&exclude=area,property_no,available,city,building_type&sort_by_groups=false', $property );}
elseif ($property['property_type']=='industrial')
{echo @draw_stats('display=list&class=property_stats&exclude=whprice,property_no,available,unit_no,city,parent_gpid&sort_by_groups=false', $property );}
else
{echo @draw_stats('display=list&class=property_stats&exclude=whprice,property_no,available,unit_no,city,parent_gpid&sort_by_groups=false', $property );}
?>
</dl>
<!-- End attribute painting -->
<?php if ($post->property_type == 'building') : ?>
<!-- if a flyer exists, display link here -->
<?php
$myproperty = $post->property_no;
$mypath = "flyers/".$myproperty.".pdf";
// echo "Looking for ".$mypath\n;
if (is_file($mypath)):
?>
<a href="http://lease.apmportland.us/<?php echo $mypath; ?>" target="_blank">View Flyer</a>
(Opens in a new window and requires Adobe Reader)<br> <br>
<?php endif; ?>
<?php endif; ?>
<!-- Begin the Community Features section -->
<!-- Begin the map section -->
<?php if(WPP_F::get_coordinates()): ?>
<div id="property_map" style="width:100%; height:450px"></div>
<?php endif; ?>
<?php if(class_exists('WPP_Inquiry')): ?>
<h2><?php _e('Interested?','wpp') ?></h2>
<?php WPP_Inquiry::contact_form(); ?>
<?php endif; ?>
<!-- End map section -->
<!-- Begin space plan section -->
<?php
$myunit = $post->unit_no;
$mypath = "spaceplans/".$myunit.".jpg";
if (is_file($mypath)): ?>
<img src="http://lease.apmportland.us/<?php echo $mypath; ?>">
<BR> <BR>
<?php echo "Note: space plan not to scale." ?>
<?php else: ?>
<img src="http://lease.apmportland.us/spaceplans/blank.jpg">
<?php endif; ?>
<!-- End space plan section -->
</div><!-- .entry-content -->
</div><!-- #post-## -->
</div><!-- #content -->
<a href="javascript:history.go(-1)"><b>Previous page</b></a>
</div><!-- #container -->
<?php
// Primary property-type sidebar.
if ( is_active_sidebar( "wpp_sidebar_" . $post->property_type ) ) : ?>
<div id="primary" class="widget-area <?php echo "wpp_sidebar_" . $post->property_type; ?>" role="complementary">
<ul class="xoxo">
<?php dynamic_sidebar( "wpp_sidebar_" . $post->property_type ); ?>
</ul>
</div><!-- #primary .widget-area -->
<?php endif; ?>
<?php get_footer(); ?>
Я начну с этого, вам лучше использовать switch/case
выписка из строки 177
где вы проверите $post->property_type
:
switch($post->property_type) {
case 'office':
$childname = "Suite ".$post->suite.$mytype;
break;
case 'industrial':
$childname = "Space ".$post->suite.$mytype;
break;
case 'retail':
$childname = $RetailAddress[0]."".$mytype;
break
}
Теперь об ошибке. Кажется, есть несколько. Первый — это то, где вы пропускаете закрытие >
:
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
Источник: Линия 157
И у вас также есть это if
блок, который не закрывается нигде в коде:
<?php if ( empty($wp_properties['property_groups']) || $wp_properties['configuration']['property_overview']['sort_stats_by_groups'] != 'true' ) : ?>
Источник: Линия 199
А также это if
здесь, где вы пропускаете закрытие endif;
снова:
<?php if ($post->property_type == 'building') : ?>
Источник: Линия 239
У вас есть это if
Строка, не открывая ее правильно или не закрывая, вы должны изменить этот блок кода:
<?php if(is_array($wp_properties['property_meta'])): ?>
<?php
foreach($wp_properties['property_meta'] as $meta_slug => $meta_title):
if(empty($post->$meta_slug) || $meta_slug == 'tagline'):
continue;
?>
<h2><?php echo $meta_title; ?></h2>
<p><?php echo do_shortcode(html_entity_decode($post->$meta_slug)); ?></p>
<?php endif; ?>
<?php endforeach; ?>
<?php endif; ?>
Источник: Линии 270
в 288
Это то, что я мог бы получить при быстром просмотре. Помните, если вы собираетесь использовать шаблоны if / endif
вам всегда нужно делать это так:
if(CONDITION) :
// do stuff
endif;
Вы не можете забыть :
в if
заявление. (Что вы сделали в своем коде)
Других решений пока нет …