Поддержка Проблемы и решения Ссылка вида ?cat= заменить на the_slug

  • Какой то мастер делал шаблон вывода списка категорий (рубрик), путем использования такого кода:

    <?php if ( have_posts() ): ?>
        <?php query_posts('cat=' . get_cat_ID('Каталог') . '&order=ASC');  ?>
        <?php
    	    $index = 4;
        ?>
        <?php while ( have_posts() ): the_post(); ?>
          <a href="?cat=<?php the_title(); ?>">
            <?php
            $thumb_id = get_post_thumbnail_id();
            $thumb_url = wp_get_attachment_image_src($thumb_id,'full', true);
            ?>
    	      <?php $index++; ?>
            <div class="goods">
              <div class="goods-img" style="background: url(<?php echo $thumb_url[0]; ?>); background-size: cover;">
                <div class="goods-animate"><div class="goods-icon"></div></div>
              </div>
              <div class="goods-name"><span><?php the_title(); ?></span></div>
            </div>
          </a>
        <?php endwhile; endif; ?>
        <?php $c = $index % 4; if ( $c ) for ($i = 0; $i < $c; $i++) echo '<div style="width: 246px;"></div>';  ?>

    как видите ссылка <a href="?cat=<?php the_title(); ?>"> имеет хук the_title()
    я же хочу сделать правильно (что бы фронтэнд не выводил мне ссылки вида …?cat=Название рубрики) выводить там слаг рубрики. Но когда я меняю the_title() на the_slug() вообще не выводит рубрики (белый лист)

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    я же хочу сделать правильно (что бы фронтэнд не выводил мне ссылки вида …?cat=Название рубрики) выводить там слаг рубрики.

    Если правильно — то параметр cat должен быть числовым, вам нужен параметр category_name.

    Но когда я меняю the_title() на the_slug() вообще не выводит рубрики (белый лист)

    Функции the_slug() не существует, попробуйте get_post_field( 'post_name' ) или get_post()->post_name.

    Это будет работать только в том случае, если есть рубрики с теми же ярлыками, что и у записей из рубрики «Каталог». Текущий вариант, насколько я понимаю, вообще не работает?

    Автор karakym

    (@karakym)

    смотрите, мне нужно слаг внутри ссылки. сейчас внутри ссылки заголовок!

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Я уже написал, как это сделать — попробуйте заменить

    
    ?cat=<?php the_title(); ?>
    

    на

    
    ?category_name=<?php echo get_post_field( 'post_name' ); ?>
    

    Идея подставлять ярлык записи в качестве ярлыка рубрики мне не вполне понятна. Почему бы не сделать цикл сразу по рубрикам? Если только из-за картинок, которых у рубрик по умолчанию нет, — можно воспользоваться плагинами типа Categories Images.

    Но текущий вариант с подстановкой заголовка записи в качестве ID рубрики понятен ещё меньше 🙂

    Автор karakym

    (@karakym)

    у рубрик как и у записей есть название, описание и ссылка (slug)
    Мне нужно сделать ПРАВИЛЬНЫЕ ссылки на категории!!!!
    не нужно мне ?cat= или ?category_name=
    мне нужна правильная ссылка, вида: /cat/ярлык_категории

    мне нужна правильная ссылка, вида:

    ЧПУ (ака пермалинки, постоянные ссылки) не пробовали настраивать?

    Автор karakym

    (@karakym)

    пробовал, они не помогли с этой конструкцией.
    просто скажите как вывести ссылку на категорию, какую переменную, функцию или хук нужно вставить в href=»» (в цикл который я привел в первом посте)

    просто скажите как вывести ссылку на категорию,

    the_category, get_category_link или др. функции.

    А вообще выкиньте эту опасную поделку и возьмите тему из оф каталога.
    query_posts('cat=' . get_cat_ID('Каталог') . '&order=ASC');
    Это жесть в квадрате — и query_posts и кириллица.

Просмотр 7 ответов — с 1 по 7 (всего 7)
  • Тема «Ссылка вида ?cat= заменить на the_slug» закрыта для новых ответов.