Я нашел учебник, который позволяет мне создать шорткод для «Календаря событий современного племени», который позволяет отображать список последних событий. Код работает и правильно отображает список, но я получаю уведомление, которое гласит: «Примечание: неопределенная переменная: no_upcoming_events в mysite / themes / theme-name / Recent_events.php в строке 40»
Это строка, на которую он ссылается:
if ( $posts && !$no_upcoming_events) {
И это полный код:
function ckhp_get_tribe_events($atts) {
if ( !function_exists( 'tribe_get_events' ) ) {
return;
}
global $wp_query, $tribe_ecp, $post;
$output='';
$ckhp_event_tax = '';
extract( shortcode_atts( array(
'cat' => '',
'number' => 5,
'error' => 'y'
), $atts, 'ckhp-tribe-events' ), EXTR_PREFIX_ALL, 'ckhp' );
if ( $ckhp_cat ) {
$ckhp_event_tax = array(
array(
'taxonomy' => 'tribe_events_cat',
'field' => 'slug',
'terms' => $ckhp_cat
)
);
}
$posts = tribe_get_events(apply_filters('tribe_events_list_widget_query_args', array(
'eventDisplay' => 'upcoming',
'posts_per_page' => $ckhp_number,
'tax_query'=> $ckhp_event_tax
)));
if ( $posts && !$no_upcoming_events) {
$output .= '<ul class="hfeed vcalendar ckhp-small ckhp-event-list">';
foreach( $posts as $post ) :
setup_postdata( $post );
$output .= '<li class="">';
$output .= '<h4 class="entry-title summary">' . '<a href="' . tribe_get_event_link() . '" rel="bookmark">' . get_the_title() . '</a>' . '</h4>';
$output .= '<div class="duration venue">' . tribe_events_event_schedule_details() . ' ' . tribe_get_venue() . '</div>';
$output .= '</li>';
endforeach;
$output .= '</ul><!-- .hfeed -->';
$output .= '<p class="tribe-events-widget-link"><a href="' . tribe_get_events_link() . '" rel="bookmark">' . translate( 'View All Events', 'tribe-events-calendar' ) . '</a></p>';
} else { //No Events were Found
$output .= ( $ckhp_error == 'y' ? '<p>' . translate( 'There are no upcoming events at this time.', 'tribe-events-calendar' ) . '</p>' : '' ) ;
} // endif
wp_reset_query();
return $output;
}
add_shortcode('ckhp-tribe-events', 'ckhp_get_tribe_events'); // link new function to shortcode name
Я не слишком разбираюсь в php, поэтому я не уверен, что мне нужно сделать, чтобы удалить это уведомление. Любая помощь будет принята с благодарностью.
PHP не требует явного объявления / инициализации переменных (что иногда удобно), но может вызвать такие проблемы.
Наиболее элегантное решение — просто проверить, что переменная установлена на что-то, прежде чем проверять, что это такое.
if ( $posts && isset($no_upcoming_events) && !$no_upcoming_events ) {
...
}
Если $no_upcoming_events
не установлен, isset
терпит неудачу и if
оператор выходит (короткие замыкания) и никогда не проверяет значение $no_upcoming_events
, избегая ошибки.
Других решений пока нет …