Поддержка Проблемы и решения Помогите, пожалуйста, с картой сайта в WordPress, что реализуется кодом.

  • Доброго времени суток, уважаемые специалисты.
    Я решил сделать HTML карту сайта, попробовал плагины, но всё что-то не то. Тогда я решил сделать её без плагина, чтобы можно было тонко подстроить дизайн.
    На просторах сети подчеркнул весьма неплохой скрипт:

    <?php
    $exclude_pages = '12, 14';
    $exclude_posts = array();
    ?>
    
    <h2>Публикации</h2>
    
    <?php
    
    $args = array();
    
    $categories = get_categories( $args );
    
    foreach ($categories as $category) {
    echo "<ul>";
    echo "<li><strong>Категория:</strong> <a href=\"".get_category_link($category->term_id)."\" target=\"_blank\" >".$category->name."</a>";
    $posts = get_posts(array('category' => $category->term_id, 'posts_per_page' => '150'));
    echo "<ul>";
    foreach ($posts as $post) {
    if(!in_array($post->ID, $exclude_posts)){
    echo "<li><a href=\"".get_permalink($post->ID)."\" target=\"_blank\" >".$post->post_title."</a></li>";
    }
    }
    echo "</ul>";
    echo "</li>";
    echo "</ul>";
    }
    ?>
    
    <?php $args = array('exclude_tree' => $exclude_pages, 'title_li' => ''); ?>
    
    <h2>Страницы</h2>
    
    <ul>
    <?php wp_list_pages( $args ); ?>
    </ul>

    Внедрил, дизайн подстроил как необходимо, благо в HTML более-менее соображаю 🙂 Но вот в нём очень не хватает возможности скрытия определённой рубрики(ик). Если пост скрыть можно, то рубрику нет. Как добавить в скрипт такую возможность?
    ———
    И ещё возникла проблема, которую, как говорится, не ждали. Я один всё делаю, помочь мне некому со статьями и картинками, потому я пишу статьи и скрываю некоторые из них с главной и присвоенной ей категории (поисковик, естественно, видит её), потому что не сделал коллаж картинку, что представляет статью. Как появляется вдохновение и свободное время я рисую её и убираю скрытие.
    Эти статьи я скрываю этим кодом:

    function exclude_post($query) {
    if ($query->is_category || ($query->is_home || ($query->is_feed)))
    {$query->set('post__not_in', array(3, 5, 7) );} // id записи (поста)
    return $query; }
    add_filter('pre_get_posts','exclude_post');

    И они не отображаются и в карте сайта, хотя они закончены, просто нет картинки. Можно ли выводить все статьи в карте сайта, включая скрытые приведённым выше кодом?

    Очень надеюсь на вашу посильную помощь, уважаемые специалисты. С созданием сайтов я познакомился недавно, осваиваю писательство, html с горем пополам освоил. Но вот модификация php кода, это совсем другой уровень 🙁

Просмотр 15 ответов — с 1 по 15 (всего 20)
  • установите плагин и не изобретайте велосипед.

    и get_categories имеет параметры вроде:

    
    $args = array(
    	'type'         => 'post',
    	'child_of'     => 0,
    	'parent'       => '',
    	'orderby'      => 'name',
    	'order'        => 'ASC',
    	'hide_empty'   => 1,
    	'hierarchical' => 1,
    	'exclude'      => '',
    	'include'      => '',
    	'number'       => 0,
    	'taxonomy'     => 'category',
    	'pad_counts'   => false,
    );
    

    вас должен интересовать параметр exclude

    Flector
    Спасибо за отзыв. Почему велосипед? Это законченное и популярное решение. Просто там нет исключения для рубрик, автор его просто за ненадобностью не ввёл. Вот как раз куча плагинов для реализации простой задачи — это и есть костыли.

    Я очень много времени потратил на адаптацию дизайна для приведённого законченного решения, что реализует хороший сайтмап. В плагине исправлять дизайн мне сложно, там кода куда больше.

    Вопрос остаётся в силе.

    • Ответ изменён 4 года, 8 месяцев назад пользователем rediioo.

    Я решил сделать HTML карту сайта,

    А Вы сами пользуетесь этими портянками на др сайтах?

    SeVlad
    Очень. Мне всегда интересно, о чём пишут люди. Особенно блогеры, наскольно они креативны и продуктивны, какие темы затрагивают.
    Я уверен, что я не один такой.

    Я уверен, что я не один такой.

    Вы один из немногих, кто меня удивляет 🙂 Я даже как-то делал опрос на др форуме.

    SeVlad
    Я исхожу из принципа, если даже помогу 5% посетителей, то это будет несомненным благом. Ведь комфорт, как мы знаем, формируется из деталей.
    Тут по мелочи, там по мелочи, а в итоге удобно и хорошо, причём для максимально возможной аудитории. Я раньше только посещал сайты, когда же я создал свой, я чётко решил, что юзабилити надо делать максимально удобным.

    юзабилити надо делать максимально удобным.

    Совершено верно! Но вы же хотите сделать прямо противоположное — портянку ссылок (+ решение вопросов с нагрузкой/скорости загрузки).
    Я Вам не зря дал ссылку на тот топик. Обратите внимание на понятие «рубрикатор» и имейте ввиду что под «html-картой» многие именно это и понимали.
    Но я ни на чём не настаиваю — дело Ваше.

    SeVlad
    Я, как мне кажется. сделал красиво и портянки не видно. В виде древовидного раскрывающегося списка, использовав скрипт «Обновленный скрипт спойлера с плавным открытием и скрытием содержимого».
    Зашедший может быстро кликнуть по списку конкретной рубрики и увидеть заголовки статей, это куда удобнее, нежели навигация в WordPress по самой рубрике, которая у меня ограничена 10 статьями.
    Вот только по неопытности я писал не тематические статьи, которые находятся в соответствующих рубриках. Удалять жалко, хочется их просто скрыть из карты. А также отобразить все существующие статьи, которые скрыты из-за отсутствия в них «Featured image».

    А Вы сами пользуетесь этими портянками на др сайтах?

    У знакомой дамы дачный сайт. В закладках, судя по переходам, в основном, именно эта карта. На форумах и в контакте тоже встречала ссылки именно на эту карту, а не на отдельные статьи. По-моему, от ЦА зависит популярность этой страницы )) Например, ctrl+f «март-март-март». И, хоть у нее есть такой тег, ни разу не встречала внутренних переходов по нему.

    Например, ctrl+f «март-март-март».

    🙂
    Процитирую ранее сказанное:

    Вот не говорите, что поиск по портянке (ctrl+f) может что-то найти такого, что не найдёт нормально сделанный поиск.
    Быстрее? Угу.. на первый взгляд. А если подумать — когда юзеру пришлось в такую карту тыкнуться? Наверное, когда он помучался и не нашел что искал?

    И добавлю — поле поиска понятно всем, а о ctrl+f знают далеко не все.

    Но опять же повторю — я ни на чём не настаиваю. Возможно и ЦА.
    (Но я вот пару лет назад переделывал дачный бложик и убрал с него карту — ничего не потерялось, траффик только возрос. Но это конечно ни в коем случае не из-за отсутствия карты. Было полное обновление сайта, смена хостинга и тд. Ида, внешних ссылок на карту не было — я не видел переходов с 404)

    Поиск выдаст кучу статей, где встречается это слово, карта — только те, где оно в заголовке.

    Поиск выдаст кучу статей, где встречается это слово, карта — только те, где оно в заголовке.

    🙂 Видимо зря я сократил цитату по ссылке выше. Там след. предложение:

    Вот и снова получается, что косяки юзабилити оправдываются необходимостью такой карты.

    Сюда же входит и ограничение области поиска 🙂

    Вот как раз куча плагинов для реализации простой задачи — это и есть костыли.

    костыль это кустарный код, с редактированием которого вы сами справиться не можете и обращаетесь на форум.

    карта сайта реализуется установкой плагина за 5 минут, а потом еще 10 минут тратится на редактирование стилей на свой вкус. итого — 15 минут работы. на кой черт использовать устаревший 10-летней давности код мне лично непонятно.

    Flector
    С вашими знаниями и опытом, несомненно, 15 минут. Когда я вижу множество строк PHP кода я теряюсь, я не понимаю что и куда, у меня нет стольких знаний.

    Я стили для приведённого выше кода отлаживал неделю, потому что я туда ещё прикрутил раскрывающийся спойлер.

    Теперь всё работает. Осталось дело за малым: исключить пару рубрик и вывести все статьи, включая те, что скрыты другим кодом, о котором говорилось в первом посте.

    Я вписал вот так исключение, но оно почему то не сработало 🙁

    <?php
    $exclude_pages = '12, 14';
    $exclude_posts = array();
    $exclude_cat = '10';
    ?>
    ......
    ...echo "<ul>";
    if(!in_array($category->ID, $exclude_cat)){
    echo "<li><strong>Категория:</strong> <a href=\"".get_category_link($category->term_id)."\" target=\"_blank\" >".$category->name."</a>";
    $posts = get_posts(array('category' => $category->term_id, 'posts_per_page' => '150'));
    }
    echo "<ul>";....
Просмотр 15 ответов — с 1 по 15 (всего 20)
  • Тема «Помогите, пожалуйста, с картой сайта в WordPress, что реализуется кодом.» закрыта для новых ответов.