@666Wolf666

Вывод произвольных типов записи, не вывод нужную информацию, почему?

Добрый день!
Написал плагин в котором с помощью шорт-кода нужно вывести портфолио.
Вот код:
<?php
/*
Plugin Name: WOLF Sites Portfolio
Description: Sites Portfolio
Version: 0.1 beta
Author: Sokhan Ihor
*/

add_action('init', 'register_wsp_type_site'); // регистрация типа записи Сайты
/*Добавлем новый тип записи в WP*/
function register_wsp_type_site () {
	$labels = array(
		'name' => 'Сайт',
		'singular_name' => 'Сайт', 
		'add_new' => 'Добавить Сайт',
		'add_new_item' => 'Добавить новый Сайт', 
		'edit_item' => 'Редактировать Сайт',
		'new_item' => 'Новый Сайт',
		'all_items' => 'Сайты',
		'view_item' => 'Просмотр Сайта на сайте',
		'search_items' => 'Искать Сайт',
		'not_found' =>  'Сайт не найдено.',
		'not_found_in_trash' => 'В корзине нет Сайтов.',
		'menu_name' => 'Сайты' 
	);
	$args = array(
		'labels' => $labels,
		'public' => true,
		'show_ui' => true,
		'has_archive' => true, 
		'menu_icon' => 'dashicons-admin-site', 
		'menu_position' => 20, 
		'supports' => array( 'title', 'editor', 'thumbnail'),
		'publicly_queryable' =>true
	);
	register_post_type('wsp_site', $args);
}

add_action('add_meta_boxes', 'wsp_url_site', 1); // регистрация дополнительного поля записей "Адрес сайта" и позиция
/*Добавляем произвольное поля для Site*/
function wsp_url_site() {
	add_meta_box( 'wsp_url_site', 'Детали сайта', 'wsp_fields', 'wsp_site', 'normal', 'high'  );
}

function wsp_fields( $post ){
	?>
	<p>
		<label>Введите URL-адрес сайта: 
			<input type="text" name="extra[wsp_url_site]" value="<?php echo get_post_meta($post->ID, 'wsp_url_site', 1); ?>" style="width:50%" /> 
		</label>
	</p>
	<input type="hidden" name="wsp_url_site" value="<?php echo wp_create_nonce(__FILE__); ?>" />
	
	<p>
		<label>Позиция вывода<br>(Не работает при случайном отображении):</br> 
			<input type="text" name="extra[wsp_weight]" value="<?php echo get_post_meta($post->ID, 'wsp_weight', 1); ?>" style="width:50%" /> 
		</label>
	</p>
	<input type="hidden" name="wsp_weight" value="<?php echo wp_create_nonce(__FILE__); ?>" />
	
	<?php
}

add_action('save_post', 'wsp_extra_fields_update', 0);
/* Сохраняем данные, при сохранении поста */
function wsp_extra_fields_update( $post_id ){
	if (get_post_type( $post_id ) == "wsp_site") {
		if ( !wp_verify_nonce($_POST['wsp_url_site'], __FILE__) ) return false; 
		if ( !wp_verify_nonce($_POST['wsp_weight'], __FILE__) ) return false; 
		if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE  ) return false; 
		if ( !current_user_can('edit_post', $post_id) ) return false; 

		if( !isset($_POST['extra']) ) return false; 

		$_POST['extra'] = array_map('trim', $_POST['extra']);
		foreach( $_POST['extra'] as $key=>$value ){
			if( empty($value) ){
				delete_post_meta($post_id, $key);
				continue;
			}
			update_post_meta($post_id, $key, $value); 
		}
		return $post_id;
	}
}

add_action( 'init', 'register_wsp_portfolio', 0 ); // регистрация портфолио
/*Добавляет портфолио*/
function register_wsp_portfolio(){
 
  $labels = array(
	'name' => _x( 'Портфолио', 'taxonomy general name' ),
	'singular_name' => _x( 'Портфолио', 'taxonomy singular name' ),
	'search_items' =>  __( 'Искать Портфолио' ),
	'popular_items' => __( 'Популярные Портфолио' ),
	'all_items' => __( 'Все Портфолио' ),
	'parent_item' => null,
	'parent_item_colon' => null,
	'edit_item' => __( 'Изменить портфолио' ),
	'update_item' => __( 'Обновить Портфолио' ),
	'add_new_item' => __( 'Добавить Новое Портфолио' ),
	'new_item_name' => __( 'Имя нового Портфолио' ),
	'separate_items_with_commas' => __( 'Separate writers with commas' ),
	'add_or_remove_items' => __( 'Добавить или удалить Портфолио' ),
	'choose_from_most_used' => __( 'Выбрать из популярных' ),
	'menu_name' => __( 'Портфолио' ),
  );
 
register_taxonomy('portfolio', 'wsp_site',array(
	'hierarchical' => true,
	'labels' => $labels,
	'show_ui' => true,
	'query_var' => true,
	'rewrite' => array( 'slug' => 'portfolio' ),
  ));
}
// Поля при добавлении элемента таксономии
add_action("portfolio_add_form_fields", 'add_portfolio_fields');
// Поля при редактировании элемента таксономии
add_action("portfolio_edit_form_fields", 'edit_portfolio_fields');

// Сохранение при добавлении элемента таксономии
add_action("create_portfolio", 'save_portfolio_meta');
// Сохранение при редактировании элемента таксономии
add_action("edited_portfolio", 'save_portfolio_meta');
/*Добавление поля количество столбцов и варианты вывода в портфолио*/

function add_portfolio_fields($taxonomy_slug) {
	?>
	<div class="form-field">
		<label for="tag-count">Количество столбцов</label>
		<select name="extra[count]" id="tag-count">
		  <option value="1">1</option>
		  <option value="2">2</option>
		  <option value="3">3</option>
		  <option value="4">4</option>
		</select>
		<p>Выберите количество для отображение на странице</p>
	</div>
	<div class="form-field">
		<label for="tag-rand">Рандомное отображение</label> 
		<select name="extra[rand]" id="tag-rand">
		  <option value="0">Отображать случайным образом</option>
		  <option value="1">Отображать с учетом позиции сайта</option>
		</select>
		<p>Рандомное отображение сайтов</p>
	</div>
	<?php
}

function edit_portfolio_fields( $term ) {
	?>
		<tr class="form-field">
			<th scope="row" valign="top"><label for="extra1">Количество столбцов</label></th>
			<td>
				<select name="extra[count]" id="tag-count">
				<?php for ($i = 1; $i < 5; $i++) {?>
				  <option value="<?php echo $i; ?>" <?php if($i == (get_term_meta( $term->term_id, 'count', 1 ))) {?>selected="selected"<?php } ?>><?php echo $i;?></option>
				<?php }?>
				</select>
				<span class="rand">Выберите количество для отображение на странице. Сейчас - <?php echo get_term_meta( $term->term_id, 'count', 1 ) ?></span>
			</td>
		</tr>
		<tr class="form-field">
			<th scope="row" valign="top"><label for="extra1">Рандомное отображение</label></th>
			<td>
			<select name="extra[rand]" id="tag-rand">
			  <option value="0" <?php if (0 == get_term_meta( $term->term_id, 'rand', 1 )) { ?>selected="selected"<?php } ?>>Отображать случайным образом</option>
			  <option value="1" <?php if (1 == get_term_meta( $term->term_id, 'rand', 1 )) { ?>selected="selected"<?php } ?>>Отображать с учетом позиции сайта</option>
			</select>
			</td>
			
		</tr>
		<tr class="form-field">
		<th scope="row" valign="top"><label for="extra1">Шорт-код:</label></th>
			<td>
				<label><strong>[wsp id_port=<?php echo $term->term_id ?>]</strong></label>
			</td>
		</tr>
	<?php
}

function save_portfolio_meta( $term_id ) {
	if ( ! isset($_POST['extra']) )
		return;
	$extra = array_map('trim', $_POST['extra']);
	foreach( $extra as $key => $value ){
		if( empty($value) ){
			delete_term_meta( $term_id, $key );
			continue;
		}
		update_term_meta( $term_id, $key, $value ); 
	}
	return $term_id;
}

add_shortcode ('wsp', 'wsp_shortcode'); // добавление шоркода
/*Функция вывода контента через ShordCode "wsp" в зависимости от выбраных параметров*/
function wsp_shortcode ($params, $content = null){ 
	 extract( shortcode_atts( array(
		'id_port' => '',
		'port' => '',
		'count' => '',
		'orderby' => ''
		), $params ) ); 
		
		$args = array(
		'post_type' => 'wsp_site', 
		'portfolio' => $port, 
		'numberposts' => $count,
		'tax_query' => array(
							array( 
								'taxonomy' => 'portfolio',
								'field'    => 'term_id',
								'terms'    => $id_port,),),
				);
		$sites = get_posts ($args);
		//print_r ($sites);
		foreach ($sites as $post) :
			setup_postdata($post);
					?>
		<h2 class="entry-title"><?php the_title(); ?></h2>
		<?php endforeach; 
}
?>


Выводит нужное количество заголовков, но проблема в том что выводит заголовок страницы на которой использован шорт-коди, а не название нужной мне записи. Как исправить?
  • Вопрос задан
  • 483 просмотра
Решения вопроса 1
Cryden
@Cryden
webdesign, webdevelopment. Мой сайт: fun-wiki.ru
Попробуй <?php echo get_the_title( $post->post_id ); ?>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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