Задать вопрос
@ligisayan

Как добавить новую вкладку с выводом taxonomy по определенному мета-полю?

Всем привет! Есть доска объявлений на wordpress с установленной темой classipress
На главной странице с объявлениями хочу добавить вкладку с новыми объявлениями вместо случайных и популярных у которого мета-поле (произвольное поле в объявлении) 'cp_new'
5a43769172cfd068977239.png
Код табов главной страницы
<div class="tabcontrol">
  <?php $ad_tabs = cp_get_ads_listing_my_tabs(); ?>
  <ul class="tabnavig">
    <?php $tab_cnt = 1; ?>
    <?php foreach ( $ad_tabs as $ad_tab => $ad_tab_args ) { ?>
    <li>
      <a href="#block<?php echo $tab_cnt++; ?>" id="<?php echo esc_attr( $ad_tab ); ?>" <?php if ( 2 < $tab_cnt ) { echo ' class="dynamic-content"'; } ?>>
	<span class="big"><?php echo esc_html( $ad_tab_args['title'] ); ?></span>
       </a>
    </li>
    <?php } ?>
  </ul>
  <?php $tab_cnt = 1; ?>
  <?php foreach ( $ad_tabs as $ad_tab => $ad_tab_args ) { ?>
  <!-- tab block -->
  <div id="block<?php echo $tab_cnt; ?>">
    <div class="clr"></div>
    <?php if ( 1 === $tab_cnt && function_exists( $ad_tab_args['callback'] ) ) {
		call_user_func( $ad_tab_args['callback'] );
    } else { ?>
    <div class="post-block-out post-block <?php echo esc_attr( $ad_tab ); ?>-placeholder">
      <!-- dynamically loaded content -->
    </div>
    <?php } ?>
    <?php $tab_cnt++; ?>
  </div>
  <!-- /tab block -->
  <?php } ?>
</div>
<!-- /tabcontrol -->

Для этого переопределяю и заменяю своей функцией cp_get_ads_listing_my_tabs() в functions.php дочерней темы и функцией callbacka. Вкладок таким образом становится 2 и они переключаются, но сам колбек не срабатывает - в него даже не заходит. Почему и как решить вопрос с работой вкладки?
function cp_get_ads_listing_my_tabs() {
	$defaults = array(
		'latest' => array(
			'title'    => 'Б/у запчасти',
			'callback' => 'cp_output_latest_ads_listing',
		),
		'popular' => array(
			'title' => 'Новые запчасти',
			'callback' => 'cp_output_new_parts_listing',
		)
	);
	$tabs = apply_filters( 'cp_ads_listing_tabs', $defaults );
	return $tabs;
}

/**
 * Outputs a listing of new parts.
 *
 * 
 */
function cp_output_new_parts_listing() {
	global $wp_query;	
	remove_action( 'appthemes_after_endwhile', 'cp_do_pagination' );
	$post_type_url = add_query_arg( array( 'paged' => 2 ), get_post_type_archive_link( APP_POST_TYPE ) );
	// show all parts but make sure the sticky featured parts don't show up first
	$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
	query_posts( array( 'post_type' => APP_POST_TYPE, 'post_meta' => 'cp_new', 'ignore_sticky_posts' => 1, 'paged' => $paged ) );
	$total_pages = max( 1, absint( $wp_query->max_num_pages ) );
	get_template_part( 'loop', 'ad_listing' );
	if ( $total_pages > 1 ) {
		cp_the_view_more_ads_link( $post_type_url );
	}
}
  • Вопрос задан
  • 45 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы