Ответы пользователя по тегу WordPress
  • Как с помощью wp_query получить записи id которых больше определнного числа?

    kobyakovdima
    @kobyakovdima
    Любитель экспериментов
    Я бы сделал это так (видео, как рассуждаю):

    /**
     * Добавляет условие WHERE в запрос Wp_Query.
     *
     * @param $where
     *
     * @return string
     */
    function modify_posts_where( $where ) {
        return $where . ' AND ID > 350';
    }
    
    // Добавляем условие
    add_filter( 'posts_where', 'modify_posts_where' );
    
    // Делаем запрос
    $posts = new WP_Query( [
        'post_type'      => 'post',
        'posts_per_page' => - 1,
        // и другие нужные параметры
    ] );
    
    // Удаляем условие, чтобы другие вызовы WP_Query() не затрагивать
    remove_filter( 'posts_where', 'modify_posts_where' );
    Ответ написан
    1 комментарий
  • Как добавить собственные скрипты в функцию add_action('wp_enqueue_scripts')?

    kobyakovdima
    @kobyakovdima
    Любитель экспериментов
    Можете так попробовать сделать (я вставлял код в functions.php темы):

    remove_all_actions( 'wp_head' );
    
    // Это также сработает и на хуке wp_footer
    add_action( 'wp_head', function () {
        wp_enqueue_script( 'my-script', get_template_directory_uri() . '/assets/js/homepage.js' );
    } );


    Ваш скрипт будет автоматически выведен на хуке wp_footer (с учётом, что в шаблоне используется функция wp_footer() соответственно).

    Как это работает?

    В движке есть такой код:
    add_action( 'wp_head', 'wp_enqueue_scripts', 1 );

    То есть на хуке wp_head запускается функция wp_enqueue_scripts() с одноименным хуком внутри. Так как мы удалили все зарегистрированные функции с хука wp_head, то функция wp_enqueue_scripts() вызвана не будет и хук wp_enqueue_scripts не зарегистрируется.

    При вызове wp_enqueue_script() напрямую, данные о скрипте будут добавлены на вывод, но так как на wp_enqueue_scripts они вывестись не смогут (хука-то такого уже нет), то автоматом перенесутся на хук wp_footer -> wp_print_footer_scripts() -> хук wp_print_footer_scripts -> _wp_footer_scripts().
    Ответ написан
    Комментировать
  • Как выбрать пост с категорией и типом записей в плагине cabon fields 2.2 wordpress?

    kobyakovdima
    @kobyakovdima
    Любитель экспериментов
    Здравствуйте. Об этом упоминается в документации на странице Condition Types. Попробуйте так:

    add_action( 'carbon_fields_register_fields', 'crb_attach_post_meta' );
    function crb_attach_post_meta() {
      Container::make( 'post_meta', 'Custom Data' )
          ->where( 'post_type', '=', 'post' )
          ->where( 'post_format', '=', 'video' )
          ->where( 'post_term', '=', array(
               'field'          => 'slug',
                'value'        => 'broder',
                'taxonomy' => 'category',
           ) )
          ->add_fields( array(
              Field::make( 'map', 'crb_location' )
                  ->set_position( 37.423156, -122.084917, 14 ),
              Field::make( 'sidebar', 'crb_custom_sidebar' ),
              Field::make( 'image', 'crb_photo' ),
          ));
    }
    Ответ написан
    1 комментарий
  • Как настроить Permalink кастомных типов записей?

    kobyakovdima
    @kobyakovdima
    Любитель экспериментов
    Привет. Странно, у меня всё нормально. Добавил код:

    add_action( 'init', 'my_custom_init' );
    function my_custom_init() {
        register_post_type( 'book', [
            'labels'   => [
                'name'               => 'Книги', // Основное название типа записи
                'singular_name'      => 'Книга', // отдельное название записи типа Book
                'add_new'            => 'Добавить новую',
                'add_new_item'       => 'Добавить новую книгу',
                'edit_item'          => 'Редактировать книгу',
                'new_item'           => 'Новая книга',
                'view_item'          => 'Посмотреть книгу',
                'search_items'       => 'Найти книгу',
                'not_found'          => 'Книг не найдено',
                'not_found_in_trash' => 'В корзине книг не найдено',
                'menu_name'          => 'Книги',
    
            ],
            'public'   => true,
            'rewrite'  => [ 'slug' => 'learn/books' ],
            'supports' => [ 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' ],
        ] );
    }


    После добавление кода сбросил реврайты. Создал страницу "Обучение" (slug = learn), затем сделал дочернюю к ней страницу "Все книги" (slug = books). Теперь при обращении к wp-test.ru/learn/books/moya-pervaya-kniga/ открывается запись с post_type=book, а при обращении к wp-test.ru/learn/books/ открывается страница с post_type=page.

    Правда я не особо понял желание сделать архив типа записи book в виде страницы. Какая цель?
    Ответ написан
  • Kama Click Counter как вставить ссылку для подсчета переходов?

    kobyakovdima
    @kobyakovdima
    Любитель экспериментов
    Соедините значит эти 2 конструкции:

    <?php
    if( $url = types_render_field( "server_url", array( ) ) ) {
        echo do_shortcode("[download url='$url']");
    }
    ?>
    Ответ написан
    Комментировать
  • Почему не работает meta_query с полями ACF?

    kobyakovdima
    @kobyakovdima
    Любитель экспериментов
    Здравствуйте. Вы параметры запроса храните в переменной $args7, а в класс WP_Query() передаёте уже другую переменную (неизвестную, пустышку) $arg7. Поэтому и не работает.
    Ответ написан
    1 комментарий
  • Почему не работает хук "carbon_fields_register_fields"?

    kobyakovdima
    @kobyakovdima
    Любитель экспериментов
    Здравствуйте. Классическая ошибка. Вы, судя по всему, используете хук carbon_fields_register_fields, но работаете с CF 1.6. Этот хук появился в CF v 2.0. В версии 1.6 был хук carbon_register_fields.



    От себя совет, скачайте CF 2.2 как плагин и установите его, раз только начинаете работу. Терять то нечего. Версия 1.6 уже не развивается, в ней многого нет, что есть в 2.2.
    Ответ написан
    6 комментариев
  • Экспорт Revolution slider 0kb?

    kobyakovdima
    @kobyakovdima
    Любитель экспериментов
    Попробуй включить дебаг у Wordpress, может туда свалятся ошибки по этой теме и станет более менее понятно, в чем дело.
    Ответ написан
    Комментировать
  • Как выбрать в wp_query данные по произвольному полю ACF?

    kobyakovdima
    @kobyakovdima
    Любитель экспериментов
    Конечно поле "Взаимоотношения" будет хранить данные в сериализованном массиве, ведь в нем можно выбрать несколько результатов. Если Вам всегда надо указывать только 1 запись, то используйте что-нибудь попроще, к примеру просто текстовое или числовое поле, куда вписывать просто ID нужной записи. Или же выбрать поле Post Object, которое даёт для этого визуальный интерфейс выбора.
    Ответ написан
    Комментировать
  • WordPress: почему не срабатывает условие?

    kobyakovdima
    @kobyakovdima
    Любитель экспериментов
    Привет. Посмотри, есть ли в $_POST вообще post_type. Чудес ведь не бывает.
    Ответ написан
    Комментировать
  • Как по name получить id или slug категории?

    kobyakovdima
    @kobyakovdima
    Любитель экспериментов
    У get_terms можно запросить таксономию по имени разными способами, но чтобы он отдал по точному имени, надо так:

    $terms = get_terms(
     array(
    	'taxonomy' => 'category',
    	'name' => 'Пупсики',
     )
    );
    Ответ написан
    Комментировать
  • Фильтрация в WordPress без указания параметров в ссылке?

    kobyakovdima
    @kobyakovdima
    Любитель экспериментов
    Если objects - это постоянная страница, то все get параметры можно сделать в виде ЧПУ. Об этом подробно расписано тут с примерами.

    А вот код, который решает Вашу проблему:
    add_action('init', 'rewrite_rule_my');
    function rewrite_rule_my(){
    	add_rewrite_tag('%metro%', '([^&]+)');
    	add_rewrite_rule('^(objects)/([^/]*)/?', 'index.php?pagename=$matches[1]&metro=$matches[2]', 'top');
    }

    Вставляется в functions.php. После вставки обязательно идём в админку -> Настройки ЧПУ и просто жмём "Сохранить", чтобы новые правила вступили в силу. В шаблоне страницы objects получаем значение так (3 способа):
    get_query_var('metro') // рекомендуемый
    $wp_query->query_vars['metro']
    $wp_query->query['metro']

    а там уже используете его по назначению.
    Ответ написан
  • Как правильно проиндексировать одностраничник на WP?

    kobyakovdima
    @kobyakovdima
    Любитель экспериментов
    Если Вы ничего не делаете через админку, то смысл вообще в CMS? Только название поменять сайту?

    1) Не важно откуда подключать файлы: с wp-includes или другого места, для индексации это не важно. То есть без разницы, подключите Вы jQuery из wp-includes или с google cdn подтяните

    2) Если у Вас создана 1 страница и более вообще ничего, то и запрещать в robots.txt нечего. Единственное, я бы запретил архивы автора (или вообще отключил). Это всё легко делается плагином Yoast SEO, не нужно будет лазить по файлам.

    3) Нет никакого смысла запрещать css и js, нет никого смысла в этом. Зачем? Если их запретить, то Гугл (и скорее всего Яндекс) не поймёт, что у Вас адаптивная вёрстка, если все media queries хранятся в css файлах.

    4) Нужно запрещать только дубли контента и информации, которую Вы не хотите видеть в поиске. В Вашем случае, у Вас всего лишь 1 страница. Нет повода что-либо запрещать, кроме страницы автора (Вас), так как Вы создаёте 1 страницу и сразу же автоматом создаётся архив автора, а также архив по датам. Всё это можно отключить плагином, ссылку на который я дал выше. Ну или же прописать это в robots.txt. Но я бы выбрал плагин, потому что он добавляет мета-теги на страницу, а они приоритетнее правил robots (так говорят сео мастера).
    Ответ написан
    1 комментарий
  • Как сделать личный кабинет на wordpress?

    kobyakovdima
    @kobyakovdima
    Любитель экспериментов
    Можно реализовать на плагине Wp-Recall, на сайте разработчика ещё куча подплагинов к нему. У плагина есть хук, с помощью которого можно делать вкладки. Если подплагигов подходящих не нашлось, то можно использовать плагин произвольных полей ACF, в котором для пользователей можно добавить поля, в которых указывать файлы ( в PRO версии есть поле repeat, которое позволяет загружать сколько влезет "повторяющихся" полей). Ну и всё, а вывести произвольные поля сложности не оставляет.
    Ответ написан
    Комментировать
  • Как исправить "Cookies заблокированы из-за неожиданного вывода на экран" в WordPress?

    kobyakovdima
    @kobyakovdima
    Любитель экспериментов
    Оставлю тут на память другим. У меня такая ошибка выскочила. Проблема оказалось в том, что functions.php был в кодировке UTF-8 с BOM. Сделал без BOM и всё стало нормально. А на сервере всё так пашет, всё нормально. Это я на локалку перенёс и такая проблема образовалась.
    Ответ написан
    Комментировать
  • Как изменить url страницы результатов поиска?

    kobyakovdima
    @kobyakovdima
    Любитель экспериментов
    Создать специальную страницу и в поисковой форме указать, чтобы результаты запросы шли именно на неё. А там с полученным запросом можно делать всё что хотите. Естественно, этой странице сделать свой шаблон с соответствующим кодом и применить его к ней.
    Ответ написан