Здравствуйте! Помогите решить проблему т…

Здравствуйте! Помогите решить проблему такого характера:
Мне нужно установить одну ссылку чтобы она показывалась только в определенной и никакой другой категории.
Спасибо!

nowik
Оцените автора
Добавить комментарий

  1. tiaurus

    1. Можно полпробовать внедрить в шаблон примерно такую конструкцию:

    <?php
    $id = array(1,2,55); # Пишем ID категорий, в которых нужно показывать код
    if ( have_posts() ) { the_post(); rewind_posts(); }
    if ( in_category($id)) { код, который нужно выводить только в определенных категориях
    } else {
    код, который нужно выводить во всех остальных категориях
    }
    ?>
    

    2. Так же можно воспользоваться плагином Optional Content: https://n-wp.ru/kak-pokazyivat-chast-soderzhimogo-pri-opredelennyih-usloviyah-optional-content/

    Этот плагин позволяет создавать содержимое, которое будет выводиться при определенных условиях.

    Ответить
    1. nowik

      1.Плагин работает только в статьях , а мне надо только в категории (рубрике)
      2. В какой файл и в какое место вставляется код:

      просто я не спец уж такой и надо бы все понять и разобраться во всем…, да и как правильно его оформить?!
      Спасибо!

      Ответить
      1. nowik

        Вставил вышеприведенную конструкцию php в конец файла index.php шаблона сайта в раздел футера и вообще сайт не грузится..
        Где ошибка и ка правильно его сделать?
        Вот так сделал:

        <?php get_footer(); ?>
        
        <?php
        $id = array(7); # Пишем ID категорий, в которых нужно показывать код
        if ( have_posts() ) { the_post(); rewind_posts(); }
        if ( in_category($id)) { Всероссийская дистанционная олимпиада
        } else {
        }
        ?>
        Ответить
        1. tiaurus

          Попробуйте так:

          <?php if ( in_category(7) ) : ?>
          Всероссийская дистанционная олимпиада
          <?php endif; ?>
          Ответить
          1. nowik

            Вставил код и добавил даже пропущенный тег <a, старницы открываются, но ссылка не показывается…
            Сайт: Цитата

            Ответить
            1. nowik

              Но если вставляю в файл сategoty.php отображает ссылку, но во всех категориях и на главной странице, а это равносильно стандартному виджету «ссылки»…
              Необходимо чтобы только в конкретной категории появлялась ссылка… Например ID раздела нужного и только в нем!

              Ответить
              1. tiaurus

                Вставляйте в archive.php

                Ответить
                1. nowik

                  Если вставляю archive.php nто показывается только в архиве, а надо чтобы ссылка отображалась только в категории «raznoe»

                  Ответить
  2. tiaurus

    Что-то я вас не пойму. archive.php — это файл архивов. Архивов по категориям, по датам, по авторам, по тегам. Например, у меня есть тема, в которой в этом файле прописано следующее:

    <?php if (is_category()) { ?>
    <p><?php printf(__('Записи категории ‘<span id="keyword"> %s </span>’', 'neutral'), single_cat_title('', false)); ?></p>

    Это условие, которое проверяет, отфильтрованы ли записи только по категории. Если да, то выводится название категории. Почему бы под описанием не вывести и вашу ссылку, указав дополнительное условие проверки категории? Получиться должно примерно так:

    <?php if (is_category()) { ?>
    <p><?php printf(__('Записи категории ‘<span id="keyword"> %s </span>’', ''), single_cat_title('', false)); ?></p>
    
    <?php if ( in_category(7) ) : ?>
    Всероссийская дистанционная олимпиада
    <?php endif; ?>
    Ответить
    1. tiaurus

      Кстати, как у вас в шаблоне архивов написано, я не знаю, но конструкция должна быть похожая. Посмотрите, найдите вывод постов из категории, вставьте в этот блок свою ссылку с условием.

      Ответить
      1. nowik

        Как найти вывод постов? Я не такой опытный и не программист и языков никаких не знаю просто чисто методом тыка и небольшого опыта действую…
        Если сможете помогите, но не в примерами своими(если можно) а на конкретно моем сайте…
        И как уже говорил мне надо продажную ссылку установить на конкретную старницу сайта, а это в моем случае корневая страница каталога под названием «raznoe» и не на каких других страницах мне ссылка не нужна….
        Наверное теперь я понятнее написал? Прошу помочь! У меня например по аналогии установлена ссылка только на главной странице, но она-то одна, а каталогов (рубрик много)….
        Вот и надо-то только чтобы ссылка выводилась только по ID каталога, а не во всех….
        Архивы вообще мне не нужны…
        Спасибо и извинения за мою тупость и назойливость, просто очень надо!!!

        Ответить
        1. tiaurus

          Выложите файл archive.php или скажите, откуда скачать тему оформления вашего блога.

          Ответить
          1. nowik

            Тема оформления: Тема и плагин к ней
            Хотя мне в архивве не надо, а надо только на странице Разное и только на этой странице
            Вот код afqkf category.php сейчас там стоит Вми предложенный код, но показывается ссылка во всех категориях, а надо только в одной

            <?php get_header(); ?>
            
            <?php $post = $posts[0]; // Hack. Set $post so that the_date() works. ?>
            <?php if (is_category()) { ?>
            <h2 class="pagetitle">Содержимое рубрики "<?php echo single_cat_title(); ?>"</h2>
            <?php } ?>
            
            <div class="nav">
            /">Главная » <?php echo(get_category_parents($cat, TRUE, ' » ')); ?>
            </div>
            
            <?php if (get_categories('child_of='.$cat.'&hide_empty=0')) { ?>
            <h3>Подрубрики:</h3>
            <ul class="child-categories">
            <?php wp_list_categories('show_count=1&child_of='.$cat.'&hide_empty=0&title_li='); ?>
            </ul>
            <?php } else { ?>
            <?php
            $ID = $wp_query->posts[0]->ID;
            $postcat = get_the_category($ID);
            $cat = $postcat[0]->cat_ID;
            $parent = get_category($cat);
            ?>
            
            <?php if ($parent->parent) { ?>
            <h3>Соседние рубрики:</h3>
            <ul class="child-categories">
            <?php error_reporting(0); wp_list_categories ('show_count=1&child_of='.$parent->parent.'&exclude='.$cat.'&hide_empty=0&title_li='); ?>
            </ul>
            <?php } ?>
            <?php } ?>
            
            <?php
            $order = "&orderby=cost&order=DESC";
            $s2 = ' selected="selected"';
            if ($_POST['select'] == 'title') { $order = "&orderby=title&order=ASC"; $s1 = ' selected="selected"'; $s2 = ''; }
            if ($_POST['select'] == 'newest') { $order = "&orderby=cost&order=DESC"; $s2 = ' selected="selected"'; }
            if ($_POST['select'] == 'oldest') { $order = "&orderby=cost&order=ASC"; $s3 = ' selected="selected"'; $s2 = ''; }
            ?>
            
            <form method="post" id="order">
            Сортировка:
            <select name="select" onchange='this.form.submit()'>
            <option value="title"<?=$s1?>>По заголовку</option>
            <option value="newest"<?=$s2?>>Самые новые</option>
            <option value="oldest"<?=$s3?>>Самые старые</option>
            </select>
            </form>
            
            <div class="line"></div>
            
            <?php if (have_posts()) : ?>
            <?php $posts = query_posts($query_string . $order); ?>
            <?php while (have_posts()) : the_post(); ?>
            
            <div class="post">
            <h3>" rel="bookmark"><?php the_title(); ?></h3>
            <div class="postmetadata"><?php the_time('d.m.Y') ?> | Автор: /author/<?php the_author_login(); ?>/"><?php the_author() ?> | Рубрика: <?php the_category(', ') ?> | <?php comments_popup_link('Оставить комментарий', 'Комментариев: 1', 'Комментариев: %'); ?></div>
            <div class="entry">
            <?php the_excerpt(); ?>
            </div>
            </div>
            
            <?php endwhile; ?>
            
            <div class="navigation">
            <?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } else { ?>
            <div class="alignleft"><?php next_posts_link('« Раньше') ?></div>
            <div class="alignright"><?php previous_posts_link('Позже »') ?></div>
            <?php } ?>
            </div>
            
            <?php else : ?>
            <h3>В данной рубрике нет статей.</h3>
            <?php endif; ?>
            
            <?php get_sidebar(); ?>
            <?php get_footer(); ?>
            <?php
            $id = array(7); # Пишем ID категорий, в которых нужно показывать код
            if ( in_category($id) ) : ?>
            Всероссийская дистанционная олимпиада
            <?php endif; ?><pre>
            archve.php
            <pre><?php get_header(); ?>
            
            <?php if (have_posts()) : ?>
            
            <?php $post = $posts[0]; // Hack. Set $post so that the_date() works. ?>
            <?php if (is_day()) { ?>
            <h2 class="pagetitle">Архив за <?php the_time('j F , Y'); ?></h2>
            <?php } elseif (is_month()) { ?>
            <h2 class="pagetitle">Архив за <?php the_time('F Y'); ?></h2>
            <?php } elseif (is_year()) { ?>
            <h2 class="pagetitle">Архив за <?php the_time('Y'); ?></h2>
            <?php } elseif (is_author()) { ?>
            <h2 class="pagetitle">Архив автора</h2>
            <?php } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?>
            <h2 class="pagetitle">Архив</h2>
            <?php } ?>
            
            <?php while (have_posts()) : the_post(); ?>
            <div class="post">
            <h3>" rel="bookmark"><?php the_title(); ?></h3>
            <div class="postmetadata"><?php the_time('d.m.Y') ?> | Автор: /author/<?php the_author_login(); ?>/"><?php the_author() ?> | Рубрика: <?php the_category(', ') ?> | <?php comments_popup_link('Оставить комментарий', 'Комментариев: 1', 'Комментариев: %'); ?></div>
            <div class="entry">
            <?php the_excerpt(); ?>
            </div>
            </div>
            
            <?php endwhile; ?>
            
            <div class="navigation">
            <?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } else { ?>
            <div class="alignleft"><?php next_posts_link('« Раньше') ?></div>
            <div class="alignright"><?php previous_posts_link('Позже »') ?></div>
            <?php } ?>
            </div>
            
            <?php else : ?>
            
            <h2>Не найдено</h2>
            <p>Извините, по вашему запросу ничего не найдено.</p>
            
            <?php endif; ?>
            
            <?php get_sidebar(); ?>
            <?php get_footer(); ?>
            
            Ответить
            1. tiaurus

              Вы определитесь, пожалуйста, где вам нужно вывести ссылку?
              Сначала вы писали, что вам нужно выводить ссылку только в определенной категории. Теперьо пишете, что вам нужно выводить ссылку только на странице Разное. Где ссылку-то эту нужно выводить?

              Ответить
              1. nowik

                Только на странице категории «разное».
                В общем в каждой категории должны быть разные ссылки не не дублироваться в категориях…
                Вроде так и писал..
                Вот например( не беру главную страницу):
                1.Категория-1 http://www.syte.com
                2.Категория-2 http://www.site-2.com
                и т.д. но каждая ссылка должна показываться только в своей категории, а не во всех сразу…
                Извините, просто Вы плохо поняли меня, а я не точно наверное пояснил…

                Ответить
  3. tiaurus

    Условие для вывода ссылки в определенной категории выглядит так:

    <?php if ( in_category('2') ) { echo ('тут должна быть ссылка'); } ?>

    2 — это ID нужной категории
    Это условие можно вставлять в single.php и archive.php.

    Ответить
    1. nowik

      Это почему-то не работает, а вот это :

      <?php if ( in_category(7) ) : ?>
      Всероссийская дистанционная олимпиада
      <?php endif; ?>

      вставил и стало работать.

      Ответить
    2. nowik

      Уважаемый тиариус, подскажите, а какой код ( только полностью, а не просто кусочек, а то я не понимаю, бабаб совсем) нужно вставить в archive.php чтобы вставить ссылку в архив определенной даты?
      Спасибо заранее…

      Ответить
      1. tiaurus

        В вашем случае это будет выглядеть наверное так:

        <?php if (is_date(тут должна быть дата, например 21-10-2010) ) : ?>
        Всероссийская дистанционная олимпиада
        <?php endif; ?>
        

        Подробнее: http://codex.wordpress.org/Conditional_Tags — начиная с пункта A Date Page.

        Ответить
        1. nowik

          Что-то не выходит по правильному не сортирует… если ставлю к примеру дату архива вот так

          <?php if (is_date(25-06-2010) ) : ?>
          Всероссийская дистанционная олимпиада
          <?php endif; ?>

          или любую другую. то показывается не только в установленной в коде дата, но и во всех архивах отображается ссылка…
          Я просто туп по php, но понимаю, что какое-то условие еще наверное должно быть… просто я не знаю как и что написать…

          Ответить
          1. tiaurus

            А какой у вас в блоге в настройках указан формат даты?

            Ответить
            1. nowik

              В блоге в настройках вот так стоит: Формат даты 14.10.2010

              Ответить
        2. Sergey Biryukov

          Функция is_date() не имеет параметров, поэтому срабатывает для любой даты. Можно получить запрошенную дату из параметров $wp_query:

          <?php
          global $wp_query;
          $date = !empty($wp_query->query['day']) ? "{$wp_query->query['day']}-{$wp_query->query['monthnum']}-{$wp_query->query['year']}" : '';
          ?>
          <?php if ( $date == '25-06-2010' ) : ?>
          Всероссийская дистанционная олимпиада
          <?php endif; ?>
          
          Ответить
          1. nowik

            А как получить существующую дату, то есть так которая в день просмотра страницы, чтобы дата всегда соответствовала системной, ну например сегодня показывается на страница, а потом добавился еще контент в архив и страница сменилась и чтобы опять показывался на странице архива или категории за дату не когда публиковалась, а на сегодняшний день просмотра главной станицы категории или архива?

            Может не понятно объясняю, но просто по другому не получается.
            Заранее спасибо!

            Ответить
  4. nowik

    Спасибо! Попробовал работает, но вот еще как такое сделать чтобы еще страница чтобы менялась?
    т.к у меня много материалов за один день и получается постранично, как реализовать… Ты гений я знаю что сможешь, а я просто чайник совсем еще…
    типа :
    http://site.ru/data(rghbvthe там 2010/06/06/page/2/
    или
    http://seonowik.ru/2010/09/page/3/

    Ответить
    1. Sergey Biryukov

      Т.е. чтобы на http://seonowik.ru/2010/09/page/2/ выводилась одна ссылка, а на http://seonowik.ru/2010/09/page/3/ — другая?

      Ответить
      1. nowik

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

        И еще, вот я поставил ссылку в категорию по id, а в этой категории много стариц, т.е постраничная навигация. вот так :
        http://seonowik.ru/category/raznoe/
        http://seonowik.ru/category/raznoe/page/2/
        …………….
        http://seonowik.ru/category/raznoe/page/42/
        и т.д. как сделать чтобы ссылка показывалась только на главной странице категории, а не на других ее страницах?

        Сейчас стоит код вывода ссылки вот такой:

        Всероссийские дистанционные конкурсы

        и выводит ссылку на все страницы данной категории , а надо только на главной странице этой категории.

        Помогите как это сделать.

        Ответить
      2. nowik

        Код вырезался вот код:
        cc lang=»php»]
        Всероссийские дистанционные конкурсы

        Ответить
      3. nowik
        <?php if ( in_category(7) ) : ?> 
        Всероссийские дистанционные конкурсы 
        <?php endif; ?>
        Ответить
  5. nowik

    Не работает.как надо… Мне надо к примеру на вот эту страницу: http://seonowik.ru/2010/06/
    или вот если нужно то на эту: http://seonowik.ru/2010/06/page/3/ и т.д. вот по такому приципу..
    А как указал Сергей Бирюков просто совсем ничего не показвает, т.е ссылка не выводится вообще

    Ответить
    1. Sergey Biryukov

      Я предположил, что речь идёт об архиве за день. Универсальный вариант может выглядеть так:

      <?php
      global $wp_query;
      $date = '';
      if ( !empty($wp_query->query['day']) )
      $date .= $wp_query->query['day'] . '-';
      if ( !empty($wp_query->query['monthnum']) )
      $date .= $wp_query->query['monthnum'] . '-';
      if ( !empty($wp_query->query['year']) )
      $date .= $wp_query->query['year'];
      ?>
      <?php if ( $date == '25-06-2010' ) : ?>
      Всероссийская дистанционная олимпиада
      <?php endif; ?>
      

      Проверил с архивами за день, месяц и год. Указывать дату для сравнения можно в одном из следующих форматов: 25-06-2010, 06-2010, 2010.

      Ответить