Jump to content
  • 0

Помогите разобраться с кастомными записями WP


IvanRu08
 Share

Question

Ребят, выручайте. Есть wp тема, на которой есть статическая главная (main.php), блог (адрес сайта/blog). К этому всему нужно добавить портфолио. Создаю отдельную страницу по аналогии с блогом, делаю кастомный шаблон и в свойствах к странице указываю этот самый шаблон. Пока все хорошо. Теперь мне нужно, чтобы на этой странице отображались превью работ (как анонсы постов), а при клике открывалась полная запись с уникальной структурой.

Создаю кастомный тип записей:

add_action('init', 'my_portfolio');
function my_portfolio()
{
  $labels = array(
	'name' => 'Портфолио', 
	'singular_name' => 'Портфолио',
	'add_new' => 'Добавить новую',
	'add_new_item' => 'Добавить новую работу',
	'edit_item' => 'Редактировать работу',
	'new_item' => 'Новая работа',
	'view_item' => 'Посмотреть работу',
	'search_items' => 'Найти работу',
	'not_found' =>  'Работ не найдено',
	'not_found_in_trash' => 'В корзине работ не найдено',
	'parent_item_colon' => '',
	'menu_name' => 'Портфолио'

  );
  $args = array(
	'labels' => $labels,
	'public' => true,
	'publicly_queryable' => true,
	'show_ui' => true,
	'show_in_menu' => true,
	'query_var' => true,
	'rewrite' => true,
	'capability_type' => 'post',
	'has_archive' => true,
	'hierarchical' => false,
	'menu_position' => 1,
	'supports' => array('title','editor','author','thumbnail','excerpt','comments')
  );
  register_post_type('portfolio',$args);
}

Все создается, отображается в админке. Создаю новую запись в разделе портфолио. Вот код файла portfolio.php, в котором должны отображаться превью портфолио:

		<div class="container-fluid">
			<div class="row-fluid">
				<div class="col-md-12">
					<?php 
						$current_page = (get_query_var('paged')) ? get_query_var('paged') : 1; // определяем текущую страницу блога
						$args = array(
	'posts_per_page' => get_option('posts_per_page'), // значение по умолчанию берётся из настроек, но вы можете использовать и собственное
	'paged'          => $current_page // текущая страница
	);
						query_posts( $args );

						$wp_query->is_archive = true;
						$wp_query->is_home = false;

						while(have_posts()): the_post();
						?>
						<h2><?php the_title() /* заголовок */ ?></h2>
						<p><?php the_content() /* содержимое поста */ ?></p>
						<?php
						endwhile;
						?>
					</div>
				</div>
			</div>

Потом создаю файл single-portfolio, где по логике должна открываться полная запись. В итоге ничего не работает. Шаблоны не подключаются, вместо этого на странице портфолио выводится какой то архив с соотвествующим названием. Не знаю, что делать. Голова уже кипит.

Люди добрые, помогите пожалуйста. Хочу реализовать примерно как здесь: https://truemisha.ru/ . То есть на этом сайте есть и блог, и портфолио, то есть по сути разные блоги, с разной структурой полной записи. Заранее спасибо за любой совет!

PS Читал как это сделать, не получилось(((((((((((

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Если я правильно понял вы:

1) Создали шаблон для списка работ и указали его название

2) Создали страницу и указали для неё этот шаблон.

Дальше посмотрите эту статью, вы в $args не указали номер категории, из которой выбирать.

У вас скорее всего старый источник query_posts() не рекомендован к использованию.))

  • Like 1
Link to comment
Share on other sites

  • 0
14 часа назад, jdk сказал:

Если я правильно понял вы:

1) Создали шаблон для списка работ и указали его название

2) Создали страницу и указали для неё этот шаблон.

Дальше посмотрите эту статью, вы в $args не указали номер категории, из которой выбирать.

У вас скорее всего старый источник query_posts() не рекомендован к использованию.))

Спасибо за ответ! Все правильно, я почти разобрался. Теперь есть страница где выводятся записи созданного типа. Потом я создаю файл single-portfolio.php. Я правильно понимаю, что имено этот файл будет отвечать за вывод полной записи? Вот код:

<?php get_template_part( 'header', 'small' ); ?>

	<main class="index">
		<div class="portfolio_width">
			<div class="container-fluid">
				<div class="row">
					<div class="col-lg-12">
						<?php 
						while ( have_posts() ) : the_post(); ?>

							<article>
								<?php 
									the_title( '<h1>', '</h1>' );
									the_content();
								?>
							</article>

						<?php
						endwhile;
						?>
					</div>
				</div>
			</div>
		</div>
	</main>
	
<?php get_template_part( 'footer', 'small' ) ?>

Однако при попытке перейти на запись по ссылке мене перебрасывает на главную страницу. В чем может быть проблема?

Link to comment
Share on other sites

  • 0

Так, с ссылками разобрался. Остался еще один вопрос, решил задать его здесь. У меня зарегистрирова кастомный тип записей с название portoflio. Так же у меня есть страница с адресом: адрес-сайта.ru/portoflio. То есть по задумке полная запись открывается по адресу адрес-сайта.ru/portoflio/адрес ссылки.

Однако, когда название кастомного типа записи совпадает со слагом страницы, то почему то не подцепляется шаблон page-portoflio, а вместо него подцепляется archive.php. Если поменять название кастомного типа записи, то все начинает работать. Но выглядит не очень красиво. Например, страница находится по адресу адрес-сайта.ru/portoflio, а вот сама запись уже открывается по адресу адрес-сайта.ru/my_portoflio/адрес ссылки.

Почему так происходит и как это можно исправить?

То есть мне нужно примерно как здесь: http://truemisha.ru/blog

Edited by IvanRu08
Link to comment
Share on other sites

  • 0
4 часа назад, jdk сказал:

Здравствуйте. Не разобрались ещё? а то форум лежал.

Здравствуйте, уже разобрался. Оказывается при регистрации кастомного типа записи нужно лишь было прописать слаг portfolio, а сам тип назвать по другому. Теперь все работает, спасибо!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy