• Хочу в сайдбаре прикреплять ссылки на PDF файлы (но что бы не было видно ссылку,а только текст «Скачать файл») для скачивания или ссылки на ютюб. Говорят можно это сделать через произвольные поля. Этот блок будет и на страницах и в записях. Проблема с самим кодом. Так как он будет вне цикла, не могу подобрать что писать.

    <?php echo (get_post_meta($post->ID, 'mytext', true)); ?> — но это только внутри цикла. А как сделать вне цикла и что со страницами делать? Там нет же ID.

    Или может есть другой вариант для вывода

Просмотр 15 ответов — с 1 по 15 (всего 24)
  • Модератор Юрій

    (@yube)

    Попробуйте вместо $post->ID использовать get_the_ID().

    и что со страницами делать? Там нет же ID.

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

    Автор ERodriguez

    (@erodriguez-1)

    Хм, ничего не появилось на странице.

    <?php echo (get_post_meta(get_the_ID(), 'mytext', true)); ?> вот что писал в шаблоне.

    Потом когда добавляю страницу пишу в пп
    ИМЯ — «mytext»
    ЗНАЧЕНИЕ — «http://www.google.ru/&#187;

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

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

    Видимо, не тот сайдбар подключаете.

    Или смотрите тот пост/страницу, в котором нет этого метаполя.

    Автор ERodriguez

    (@erodriguez-1)

    Для «попыток» подключить произвольное поле я сделал отдельный шаблон.
    Так как сайт уже работает и не хочется работающие шаблоны трогать.
    Тему всю делал я. Может надо что то в functions.php прописывать для работы произвольного поля?

    Для «попыток» подключить произвольное поле я сделал отдельный шаблон.

    Ну. А сайдбар-то не забыли подключить? Я, только что, на дефолтной (TwentyTwelve) теме, закинул ваши строчки (даже не изменял их) и у меня все работает:
    http://trueimages.ru/img/52/1a/6a0120a5d5216b7d97e7dd766fc.png
    http://trueimages.ru/img/9b/c9/d56a3d7b0d82557b1a83653d317.png

    Автор ERodriguez

    (@erodriguez-1)

    Увидел ваш код и вот
    <?php echo (get_post_meta(get_the_ID(), 'mytext', true)); ?> — должен быть внутри <?php if ( is_active_sidebar ... это обязательное условие ? Или можно произвольно использовать где угодно?

    внутри <?php if ( is_active_sidebar … это обязательное условие ?

    Это содержимое сайдбара. Говорит о том, что если нет виджетов в нем, то не показывать. Обведенное красным это добавлено мной, все остальное — это «родное» темы TwentyTwelve.

    Автор ERodriguez

    (@erodriguez-1)

    И так, <?php echo (get_post_meta(get_the_ID(), 'mytext', true)); ?> работает если я его кидаю в цикл have_posts. А без него не работает.
    А там куда я хочу его прилепить ничего нет(нет циклов).

    Автор ERodriguez

    (@erodriguez-1)

    Насколько я понял что одно имя(ключ) только для одной ссылки. Это если мне надо 3-5 ссылок выложить, то надо создавать заранее много get_post_meta с разными именами? И я писал выше что ссылки не должны быть видны, если сделать так <li><a href="<?php echo (get_post_meta(get_the_ID(), 'mytext', true)); ?>">ТЕКСТ</a></li>, то ссылки не видны и все бы ничего, но я «обречен» на слово «ТЕКСТ» пока не полезу редактировать шаблон?

    А там куда я хочу его прилепить ничего нет(нет циклов).

    Если честно, то мне совсем не интересно, куда вы его «лепите» 🙂
    Шаблон одиночной записи (ака пост [single.php], то как сделал я):

    +---------------------------+
    |          header.php       |
    +--------------+------------+
    | здесь цикл   |sidebar.php |
    | ака Loop     |  наш код   |
    |              |            |
    +--------------+------------+
    |       footer.php          |
    +---------------------------+

    Если одиночная запись выводится, то можно получить ее ID, при этом не имеет значения где находится ваш код (хоть в header, хоть в footer, хоть в sidebar) для получении метаполя, принадлежащей этой записи.

    то надо создавать заранее много get_post_meta с разными именами?

    Нет, не использовать булев флаг:
    get_post_meta(get_the_ID(), 'mytext'); тогда вернется массив со всеми значениями этого метаполя (mytext). Чтобы вывести после этой операции нужные значения используйте функции для работы с массивами http://www.php.net/manual/ru/ref.array.php

    Автор ERodriguez

    (@erodriguez-1)

    Начну с начала.
    Шаблон делал я с нуля.

    get_post_meta работает у меня только в цикле have_posts. Вне его не выводится ничего, в месте где должна быть ссылка из значения, пусто. sidebar.php — у меня нет вообще. Сайдбар в одном файле с контентом.

    Автор ERodriguez

    (@erodriguez-1)

    Вот по другому попробую объяснить что хочу я.

    <li><a href="сюда вставить ссылку">сюда описание ссылки</a></li>
    Эти 2 вставки надо делать с админки.

    Вот по другому попробую объяснить что хочу я.

    Мы давно поняли, что Вам надо. 🙂
    Если Вы не можете воспользоваться данными ссылками-обяснениями и сочинить нужный код, тогда советую подобрать плагин для работы с произвольными полями. Их масса и они разные по функционалу. Я точно видел несколько, где можно было добавлять произвольное кол-во полей и даже мета-боксов (аяксом).

    Автор ERodriguez

    (@erodriguez-1)

    Все на что хватило моего мозга, это сделать такую «карусель».

    <li><a href="<?php echo (get_post_meta($post->ID, 'link1', true)); ?>"><?php echo (get_post_meta($post->ID, 'name1', true)); ?></a></li> — Но не удобно же получается)

Просмотр 15 ответов — с 1 по 15 (всего 24)
  • Тема «Прикрепить ссылки через произвольные поля» закрыта для новых ответов.