Доброго дня,
использую фреймворк PODs для WP.
Создал несколько custom post types и связал их между собой.
Есть необходимость отразить эту связь в структуре ссылки (slug).
Пример: domain/custom-post1/custom-post2/post-title
В связи с чем создал костюмную функцию, где реализовываю этот алгоритм:
<?php
function custom_post_slug ( $post_link, $post ) {
/* Pulling the relation post slug */
$quote_author = get_post_meta($post->ID, 'quote_author', true);
$quote_author['post_name'];
/* Condition for 'quote' post type */
if ( 'quote' != $post->post_type || 'publish' != $post->post_status ) {
return $post_link;
}
/* Modifying slug */
$post_link = str_replace( '/' . $post->post_type . '/', '/' . $quote_author['post_name'] . '/' . $post->post_type . '/', $post_link );
return $post_link;
}
add_filter( 'post_type_link', 'custom_post_slug', 10, 3 );
?>
Сама функция отрабатывает правильно, так как структура ссылки приобретает ожидаемую структуру. Проблем в том что страница поста отдает ошибку:
404 / not found
Что я упустил?
Спасибо
для вложенных записей надо указывать родительский пост. см. пункт post_parent:
https://wp-kama.ru/function/get_post
<?php $my_post = array(); $my_post['ID'] = 37; $my_post['post_parent'] = 100; // ID родительского поста wp_update_post( wp_slash($my_post) ); ?>
и потом использовать родную wp-функцию для получения ссылок:
<?php $link = get_permalink( $post_id ); ?>
Также можно попробовать изменить структуру ссылок, через настройки ссылок:
Спасибо, но я всеже не понял.
До ID-шек я достучался, тоесть я получаю ID текущего поста и ID связанного поста. Что дальше?
Если вам надо сделать струкруту устра вот такой:
domain/custom-post1/custom-post2/post-title
Тогда надо создать пост custom-post1
После создаем пост custom-post2 и задаем его значению post_parent ID родительского поста, в нашем случае ID custom-post1
Получаем урл через get_permalink(custom-post2-ID)
НО!. у меня есть вопрос, что значт “custom-post1” и “custom-post2”? Это должны быть ID постов или их заголовки?
По поводу вопроса “что значт “custom-post1” и “custom-post2”?”
– Это должны быть заголовки
ну тогда так и делайте:
– Создаете Пост 1.
– Создаете Пост 2
– Посту 2 назначете родительский пост – Пост 1
– через get_permalink( ID поста 2 ) получаете ссылку с вложеностью. она автоматически должна сформироваться
Настройки ссылок у вас должны быть как на изображении
– Настройки ссылок как на изображении – подтверждаю.
– Пост 1 и Пост 2 созданы
А как Посту 2 указать что его родитель Пост 1?
если через код или для постов, то смотреть комментарий по ссылке выше
если это страница, то можно зайти в редактирование страницы в админке и задать там. см изоображение: