Jump to content

hedgehog

Expert
  • Posts

    1,110
  • Joined

  • Last visited

  • Days Won

    14

Posts posted by hedgehog

  1. On 10/28/2017 at 11:00 PM, Nana said:

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

    "тест на php" это что? просто код или какая-то песочница для выполнения кода? Если просто форматированный код, то плагинов вагон https://wordpress.org/plugins/tags/sourcecode/

    а вообще лучше создавать отдельную тему по своей проблеме

  2. В 1/24/2017 в 16:07, Николя223 сказал:

    А вам не кажется что вы предлагаете тоже самое только с другого ракурса?)

    Не кажется. Подменять raw query это крайний случай, когда нет других способов. Тем более, в вашем примере лимиты указаны неправильно - будут показываться все те же 20 постов каждый раз, на любой странице, см LIMIT: https://dev.mysql.com/doc/refman/5.7/en/select.html

     

    В 1/24/2017 в 16:07, Николя223 сказал:

    Я сталкивался с такой проблемой.

    он пишет о том что не работает wp_pagenavi()

    так как он перезатирает предыдущий запрос.

    А конкретнее - потому что в новый запрос не передается "paged" поэтому он всегда отображает последние 20 постов. А передавать этот параметр в этом конкретном случае особого смысла нет: в некоторых случаях будет 404я ошибка, например если значение posts_per_page в новом запросе меньше, чем в оригинальном запросе.

    Задача простая: задать posts_per_page ДО выполнения основного запроса. Либо указав значение в Settings>Readings, либо используя тот же pre_get_posts (если нужно изменить только для конкретного случая, например для отображения терминов в таксономии book)

    Пример для таксономии book:

    add_action('pre_get_posts', 'posts_per_book_tax_page');
    
    function posts_per_book_tax_page($query) {
    	if ( is_admin() || !$query->is_main_query() )
    		return;
    
    	if ( $query->is_tax('book') )
    		$query->set('posts_per_page', 20);
    }

    Больше про Conditional Tags (а-ля is_tax): https://codex.wordpress.org/Conditional_Tags

    PS: Проверкa на is_main_query() ОБЯЗАТЕЛЬНА.

    PPS: кстати, в 4.1 добавили свою функцию: the_posts_pagination

    Главный вопрос: вся эта музыка с лимитом 20 постов на страницу - затевается для ВСЕХ страниц, или для конкретных? Если для конкретных - то для каких (категории, теги, иные архивы)?

  3. Нужно немного почитать про Loop: https://www.elegantthemes.com/blog/tips-tricks/the-wordpress-loop-explained-for-beginners

    Вывод статей по рубрике/тегу происходит автоматически при открытии страницы тега или рубрики. Как это работает: https://developer.wordpress.org/themes/basics/template-hierarchy/

    Если нужно вывести посты по тегу или категории ВНЕ стандартных шаблонов, то нужно почитать про WP_Query, get_posts и в принципе про циклы:
    https://codex.wordpress.org/The_Loop#Multiple_Loops_in_Action
    https://codex.wordpress.org/Class_Reference/WP_Query

     

  4. Параметр paged передается? Если не хочется заморачиваться, можно поставить плагин WP Pagenavi, который умеет генерить ссылки для навигации. Просто где-нибудь внизу/вверху страницы добавить код а-ля:

    <?php if ( function_exists('wp_pagenavi') ) wp_pagenavi(); ?>

    posts_per_page указывается в настройках Settings > Reading, если нужно изменить количество постов для какого-то конкретного архива, можно использовать фильтр pre_get_posts чтобы не обращаться к БД повторно.

    Вышеописанное актуально для стандартных циклов (Loop)

    9 часов назад, Николя223 сказал:

    можете попробовать трюк сделать.  https://wp-kama.ru/hook/post_limits

    что то типа такого

    
    add_filter( 'post_limits', 'editLimitForTaxonomy' );
    function editLimitForTaxonomy( $limit,  $query ) {
       if (!is_admin()){
          if ( $query->query_vars['taxonomy'] == 'ВАША ТАКСОНОМИЯ' ){
             $limit = 'LIMIT 20';
          }
       } 
    	return $limit;
    }

     

    Я бы не трогал в этом случае лимиты. Зачем велосипедить, если вордпресс сам отлично справляется, зная № страницы и количество отображаемых постов?

  5. get_posts не делает поиск по цене, вопрос не совсем корректно поставлен. в примере видно, что выборка идет по значению поля _price (я без понятия это regular или sale). я думаю, можно два поля совместить в запросе с оператором OR. т.е. либо regular price в заданном диапазоне, либо sale price:https://codex.wordpress.org/Class_Reference/WP_Meta_Query

    см. параметр relation

  6. Если бы никому не нужно было "писать сайт", нас бы не было. Далеко не всем подходит функционал готовых решений. Если тебе для сайта-визитки достаточно скачать даже бесплатный шаблон, то мои клиенты на такое не готовы - у них для сайта конкретные требования, которые нужно реализовать. Плюс, вполне определенные требования по дизайну, а не "возьму готовую тему и мой сайт будет выглядеть как еще несколько сотен сайтов".

    • Like 2
  7. редактирование сторонней темы - печальная затея, если тему планируется обновлять.

    генерится все это дело в файле "./inc/theme-options.php", функция catchbox_assets. если идея в том, что хочется редактировать основную тему - то можно править прямо здесь (и убрать предыдущий код)

    если работать с дочерней темой, то можно определить свою функцию "catchbox_footer_content", которая будет выводить нужные копирайты

  8. Мне нужно вставлять местные названия рецептов, начиная от английского и кончая хинди, урду, малави, и т.д. Так что, думаю простым копированием отделаться не получится! :0(

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

  9. Вот так можно подключить jQuery

    <?php wp_enqueue_script('jquery'); ?>

    а по-хорошему - подключать свой скрипт в футере (см. последний аргумент - true) и использовать API, указав в зависимостях jQuery. Это для functions.php (или куда ты хуки пишешь):

    add_action('wp_enqueue_scripts', 'theme_enqueue_scripts');function theme_enqueue_scripts() {  wp_enqueue_script( 'stickers', get_template_directory_uri() . '/js/stickers.js', array('jquery), '1.0', true );}

    Параметры см тут: https://developer.wordpress.org/reference/functions/wp_enqueue_script/

    Обычно незачем перетирать встроенную в вордпресс jquery библиотеку, а если даже есть зачем - то не так топорно.

  10. Все смешалось - люди, кони. Я так понимаю, это попытка вывести новости на странице? Для этого можно у post_type включить опцию has_archive, тогда по ссылке /{slug}/ будут выводиться посты этого типа. В данном случае ссылка наверное будет выглядеть как /news/

     

    По умолчанию будут использоваться шаблоны в таком порядке:

    index.php > archive.php > archive-{posttype}.php

     

    Если нужно обязательно использовать кастомный шаблон страницы, то добавляй поле, в котором пользователь будет выбирать какой именно контент будет выводиться. Например, выпадающий список: новости, каталоги и тд

  11. Контент слайдера относится непосредственно к статье? Если да, то можно добавить что-то вроде:

     

    • Дополнительное текстовое (напр. WYSIWYG) поле для контента слайдов, или там шорткода
    • Дополнительные поля для добавления слайдов в статью (а-ля ACF repeater)
    • Если слайды идут отдельным типом постов, то посредством плагинов Advanced Custom Fields или Posts 2 Posts выбирать их при редактировании страницы (т.е. что-то вроде relationship - статья хранит только ссылки на посты-слайдеры, привязанные к статье)
       

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

     

    PS: Выше я видел шорткод, который выводит слайды по категории. Почему бы просто не добавить поле со списком категорий? Пользователь просто выбирает категорию слайдов - и слайды из этой категории уже выводятся тем плагином, который используется. Если вопрос в том, как получить данные поля статьи ВНЕ цикла, то get_queried_object_id() - то, что нужно. Главное, если используются дополнительные циклы - чтобы они сбрасывались корректно...

    • Like 1
  12. код видно не весь... левая часть вообще вырезана, непонятно откуда берется $img - похоже что это выводятся категории, а картинки редактируются в самих категориях.

  13. Мне просто казалось, что есть какой-то "правильный" и "красивый" способ, ориентированный на домохозяек :)

     

    при редактировании страницы/записи над редактором есть кнопка "Add Media". Жмем, создаем галерею, вставляем галерею в нужное место. Дальше - только застилить.

     

    При необходимости можно изменить HTML структуру галереи. Для этого я добавлял параметр "тип", чтобы при выборе определенного типа галереи она отображалась как мне надо.

     

    Во многих случаях может подойти готовый плагин-слайдер, см https://wordpress.org/plugins/search.php?q=slider

     

    А вообще - вариантов масса. В зависимости от потребностей и возможностей.

  14. Бывает, что хостер запрещает слать почту с сервера. Как вариант - попробуй слать почту через внешний SMTP, например, через гугловый. 

    Недавно пользовался этим плагином: https://wordpress.org/plugins/postman-smtp/

     

    А, черт, не дочитал...

     

    Попробуй отправить сам почту: http://php.net/manual/en/function.mail.php

    И еще - с какого ящика Ворпдресс пытается слать письма? В смысле, отправитель какой?

  15. все правки которые касаются визуального оформления, как то: цвет, размер, расположение и т.д...., выносятся в отдельный стилевой файл .css - в нем обычно и производят изменения, которые могут затронуть весь сайт в целом.

     

    Можно отредактировать файлик CSS из темы (шаблона). Просто и сердито. Но, если после этого обновишь тему - твои все правки уйдут в небытие :)

     

    Если хочется сохранить возможность обновления темы, то я бы рекомендовал сделать дочернюю тему, а в ней уже колдовать как угодно: https://codex.wordpress.org/Child_Themes

  16. Потому что action неправильный.  Красным выделено, при какой переменной "action" будет выполнен колбек "citiesView". 

     

    add_action('wp_ajax_postview_citiesView', 'citiesView');

    <input type="hidden" value="postview_citiesView" name="action">
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy