Cześć,
Dość szybko można taki moduł napisać. Kod będzie się znajdował w pliku single.php
Na początek trzeba sprawdzić post type i pobrać kategorię:
<?php
if(get_post_type() === 'produkty'){
//Pobierz kategorię ( term )
$cat = wp_get_post_categories();
$term = '';
if(isset($cat[0]) // Pobiera pierwszą kategorię, jeżeli jest ich więcej
$term = get_term_by('id', $cat[0], 'category');
// Pobierz posty
$args = array(
'posts_per_page' => 5,
'exclude' => array(get_the_id()), // Nie pobieraj produktu, który jest teraz wyświetlany
'category' => $term );
$products = get_posts( $args );
// Tutaj pęta foreach i HTML...
...
}
?>
Widzę mały błąd. W tablicy $args ma być $term->term_id, a nie $term.
Twórca wątku
Kadai
(@kadai)
Dzięki za odpowiedź ale niestety jak wklejam ten kod do single.php to wywala mi błąd „Parse error: syntax error, unexpected '$term’ (T_VARIABLE)” W tablicy zmieniłem też $term na $term->term_id
Wybacz. Wyjątkowo pisałem kod od razu w komentarzu i nie sprawdzałem go. Widzę, że umknął mi nawias zamykający ifa w if(isset($cat[0])
. Powinno być tak: if(isset($cat[0]))
Gdyby dalej coś było nie tak, to wieczorem przetestuje kod i wkleję w pełni działający. Niemniej jednak myślę, że sobie już poradzisz z tego miejsca.
Twórca wątku
Kadai
(@kadai)
Nie ma już błędu ale jeszcze chyba jest coś nie tak bo wyświetla mi się tylko jeden post i to ten aktualny na którym jestem. Będę wdzięczny jeśli dasz rade poratować wieczorem w pełni działającym kodem
Błędnie założyłem, że funkcja wp_get_post_categories()
pobiera ID posta ze zmiennej globalnej $post.
Poniżej gotowy kod:
<?php
if (get_post_type() === 'produkty') {
$post_id = get_the_ID();
//Pobierz kategorię ( term )
$cat = wp_get_post_categories($post_id);
$term = '';
if (isset($cat[0])) // Pobiera pierwszą kategorię, jeżeli jest ich więcej
$term = get_term_by('id', $cat[0], 'category');
// Gdy udało się pobrać kategorię
if (!empty($term)) {
// Pobierz produkty
$args = array(
'posts_per_page' => 5,
'exclude' => array($post_id), // Nie pobieraj produktu, który jest teraz wyświetlany
'category' => $term->term_id
);
$products = get_posts($args);
// Gdy udało się pobrać jakieś produkty
if (!empty($products)) {
foreach ($products as $product) {
echo $product->post_title . '<br />';
// ... Tutaj pisz HTML
}
}
}
}
?>
Twórca wątku
Kadai
(@kadai)
Bardzo doceniam pomoc ale dalej coś nie gra bo nic nie wyświetla się jak wrzucę ten kod do single.php
Spokojnie. Rozwiązanie jest już bardzo blisko 🙂
Dodaj do tablicy $args jeszcze to: 'post_type' => 'produkty'
Twórca wątku
Kadai
(@kadai)
Jesteśmy coraz bliżej ale wciąż na stronie nic się nie wyświetla 🙁