Ответы пользователя по тегу WordPress
  • Дублируются страницы в wordpress, как это исправить?

    @TraiDeR
    Есть решение этой проблемы. Вот тут давал ответ

    В целом, нужно просто в файл functions.php вашей темы вставить код:
    global $posts, $numpages;
    
    $request_uri = $_SERVER['REQUEST_URI'];
    
    $result = preg_match('%\/(\d)+(\/)?$%', $request_uri, $matches);
    
    $ordinal = $result ? intval($matches[1]) : FALSE;
    
    if(is_numeric($ordinal)) {
    
        // a numbered page was requested: validate it
        // look-ahead: initialises the global $numpages
    
        setup_postdata($posts[0]); // yes, hack
    
        $redirect_to = ($ordinal < 2) ? '/': (($ordinal > $numpages) ? "/$numpages" : FALSE);
    
        if(is_string($redirect_to)) {
    
        // we got us a phantom
        $redirect_url = get_option('home') . preg_replace('%'.$matches[0].'%', $redirect_to, $request_uri);
    
        // if page = 0 or 1, redirect permanently
        if($ordinal < 2) {
            header($_SERVER['SERVER_PROTOCOL'] . ' 301 Moved Permanently');
        } else {
            header($_SERVER['SERVER_PROTOCOL'] . ' 302 Found');
        }
    
        header("Location: $redirect_url");
        exit();
    
        }
    }
    Ответ написан
    Комментировать
  • Как сделать редирект на основную страницу wordpress исключив дубли?

    @TraiDeR
    Можно решить проблему бесконечного дублирования страниц в wordpress, просто встроить следующих код в functions.php вашей темы:
    global $posts, $numpages;
    
    $request_uri = $_SERVER['REQUEST_URI'];
    
    $result = preg_match('%\/(\d)+(\/)?$%', $request_uri, $matches);
    
    $ordinal = $result ? intval($matches[1]) : FALSE;
    
    if(is_numeric($ordinal)) {
    
        // a numbered page was requested: validate it
        // look-ahead: initialises the global $numpages
    
        setup_postdata($posts[0]); // yes, hack
    
        $redirect_to = ($ordinal < 2) ? '/': (($ordinal > $numpages) ? "/$numpages" : FALSE);
    
        if(is_string($redirect_to)) {
    
        // we got us a phantom
        $redirect_url = get_option('home') . preg_replace('%'.$matches[0].'%', $redirect_to, $request_uri);
    
        // if page = 0 or 1, redirect permanently
        if($ordinal < 2) {
            header($_SERVER['SERVER_PROTOCOL'] . ' 301 Moved Permanently');
        } else {
            header($_SERVER['SERVER_PROTOCOL'] . ' 302 Found');
        }
    
        header("Location: $redirect_url");
        exit();
    
        }
    }

    Источник решения
    Ответ написан
  • В чем суть ошибки (WordPress, Pods)?

    @TraiDeR
    Для вывода значения кастомного поля используйте эту функцию:
    <?php echo get_post_meta( $post->ID, 'name', true );

    Учитывайте, что код работает только внутри цикла. Если попытаться сделать это за пределами цикла, то возникнет ошибка.
    Также хотелось увидеть код вашей страницы в целом. Так будет проще определить проблему.
    Ответ написан
    Комментировать
  • Wordpress загрузить аватар?

    @TraiDeR
    Для загрузки аватара пользователя вам понадобятся такие функции WordPress как: media_handle_upload()
    wp_get_attachment_url()
    update_user_meta()

    Подробнее про редактирование профилей пользователя, в том числе про загрузку аватара можно почитать в этой статье.
    Ответ написан
    6 комментариев
  • Как оптимизировать работу wordpress?

    @TraiDeR
    Если у вас не настроено кэширование рекомендую это сделать. Из простых плагинов это HyperCache. Есть и посложнее, например W3 Total Cache.
    В последнее время на своих WP сайтах заметил массовый подбор паролей,
    это создавало нагрузку, хоть я и ограничил количество запросов с одного ip. Рекомендую вам посмотреть логи сервера, возможно боты и к вам стучаться. Обычно на shared-хостинге делают какую-то защиту от подобных атак, но если ваш хостер об этом не позаботился можно поставить дополнительную авторизацию на wp-admin средствами веб-сервера.
    Ответ написан
  • Как сделать личный кабинет для пользователей?

    @TraiDeR
    В вашем случае можно использовать API WordPress.
    Если хотите расширить возможности WordPress посмотрите в сторону плагина PODS и его API.

    Есть цикл-статей как с фронт-энда публиковать посты, редактировать профиль пользователя, создавать формы авторизации и регистрации и т.п. Можно взять код и адаптировать его под вашу задачу.

    Про плагин PODS
    Ответ написан
    2 комментария
  • Как загрузить множество изображений в запись(пост)?

    @TraiDeR
    Недавно отвечал на похожий вопрос: https://toster.ru/answer?answer_id=814248
    Нужно использовать плагин PODS и кастомное поле для загрузки изображений. В ответе есть код вывода множества изображений. Код легко адаптировать под любой слайдер.
    В интерфейсе администратора добавление/редактирование фотографий будет выглядеть следующим образом:
    6a02ecac29ef46b2bcc665a53f05d385.png
    Рекомендую вам изучить плагин PODS, будет очень полезен в работе с WordPress.
    Ответ написан
    7 комментариев
  • Как решить проблему с загрузками фото через обработчик?

    @TraiDeR
    Попробуйте для каждого отдельного изображения создать отдельное поле:
    <input type="file" name="imgs[]">
    Если пользователю нужно загрузить более 1 картинки, на JS можно создавать новые поля по требованию.

    UPD: Судя по комментариям и коду вашей формы, вижу что вы забыли добавить атрибут enctype="multipart/form-data" к форме. Без него загрузка файлов не будет происходить.

    UPD 2: Выдержка из комментариев: Для работы функции media_handle_upload()
    необходимо присутствие следующих строк в коде:
    include_once ABSPATH . 'wp-admin/includes/media.php';
    include_once ABSPATH . 'wp-admin/includes/file.php';
    include_once ABSPATH . 'wp-admin/includes/image.php';

    В противном случае будет возвращать ошибку: Fatal error: Call to undefined function media_handle_upload()
    Ответ написан
    22 комментария
  • Как добавить возможность загрузки нескольких изображений в WordPress?

    @TraiDeR
    Рекомендую посмотреть в сторону плагина PODS. Он позволяет создавать новые типы постов или расширять существующие.
    В вашем случае необходимо добавить новое поле для добавления своих изображений к посту.

    Порядок действия:
    1) Устанавливаем плагин
    2) В админке Управление POD > Добавить новый > Расширить существующий.
    3) В поле тип содержимого выбираем: типы постов, а в тип поста - записи. Создаем.
    4) Добавляем новое поле типа File / Image / Video. Вводим подпись и имя, например, images. В дополнительных настройках поля выбираем Upload Limit: Multiple Files. Сохраняем.
    5) Переходим к редактированию поста и видим, что появилась возможность прикреплять дополнительные изображения.
    6) Чтобы вывести изображения в нужным месте используйте следующий код:
    if ( get_post_meta( get_the_ID(), 'images', false ) ){ //images название вашего произвольного поля
        $image_array = get_post_meta( get_the_ID(), 'images', false ); //images название вашего произвольного поля
    }
    if ( $image_array ) {
    
        foreach ( $image_array as $image ) {
            
            $thumbimg = wp_get_attachment_image( $image['ID'], 'thumbnail');
            $fullimg = pods_image_url( $image['ID'], 'large');
            echo '<a href="'.  $fullimg . '">' . $thumbimg . '</a>';
        }
    }
    Ответ написан
    19 комментариев
  • Есть аналоги Wordpress но попроще?

    @TraiDeR
    Если вам нужна очень простая CMS, то посмотрите в сторону Cockpit
    Однако, из вашего вопроса я не совсем понял какие задачи вы решаете, если создаете что-то предельно простое вроде сайта визитки, то думаю эта система подойдет, однако если что-то посложнее я бы искал другое решение.
    Ответ написан
    2 комментария
  • Как сделать такой вывод записи?

    @TraiDeR
    Попробуйте вставить в ваш шаблон внутри цикла следующий код:
    <a href="<?php the_post_thumbnail_url('full'); ?>">
       <img src="<?php the_post_thumbnail_url('thumbnail'); ?>" alt="" title="<?php the_title(); ?>"/>
    </a>

    Размеры миниатюры можно задавать строкой, принимает следующие параметры - thumbnail, medium, large, full.
    Также размеры можно задать массивом, например array(1024,1024).

    Есть вероятность, что придется пересоздавать миниатюры у уже созданных постов, сделать это можно плагином Regenerate Thumbnails

    Лучше всего объявлять свои размеры миниатюр в файле functions.php WordPress шаблона:
    add_image_size( 'image-size-name', 285, 190, true );

    Первый параметр название размера, второй и третий непосредственно размеры, четвервый параметр - кадрирования. Подробнее о функции можно почитать здесь.
    После объявления нового размера изображения в функции the_post_thumbnail_url можно использовать зарегистрированные вами названия. Этот способ, на мой взгляд правильный, так в случае необходимости изменения размеров миниатюр, менять эти размеры нужно будет только в одном месте, в файле functions.php. Затем, скорее всего потребуется плагином пересоздать миниатюры.
    Ответ написан
  • Плагин для WP - фрагменты из одного поста в разных частях страницы?

    @TraiDeR
    Я рекомендую вам обратить внимание на плагин PODS. С его помощью вы сможете создать произвольные поля и выводить их в вашем шаблоне как вам нужно, можно создавать любую структуру. Плагин бесплатный.
    Вот хорошая статья на русском, чтобы быстро войти в курс дела
    Ответ написан
    Комментировать
  • Как разместить Wordpress в подкаталоге (NGINX)?

    @TraiDeR
    Была похожая проблема со скачиванием index.php. Вопрос решился на удивление просто - очистка кэша браузера.
    Ответ написан
    Комментировать
  • Что за плагин на сайте?

    @TraiDeR
    Если у вас есть немного опыта в редактировании WordPress шаблонов и базовые знания php, то с WP можно сделать многое. Как уже ответил aarty20 реализуется эта функциональность через Custom Post Types.

    Для работы с кастомными типами я рекомендую посмотреть в сторону плагина PODS, достаточно мощное решение. С помощью этого плагина кастомные типы можно создать из админки через графический интерфейс, а выводить в нужном месте в вашей WordPress теме.

    Если объяснять на примере биографии. Нужно создать новый тип поста и таксономию. Таксономия будет содержать категории, а кастомный пост будет содержать всю информацию о биографии человека.
    Что дает вам кастомный тип постов? Вы сможете в админке создать пункт меню Биографии, где сможете добавлять новые биографии человека и выводить их в своем шаблоне. При создании биографии для отдельного человека вам недостаточно лишь стандартных полей создания записи, таких как Заголовок, Текст записи, Миниатюра. Вам нужны дополнительные поля в админке, например годы жизни, дополнительные фотографии и т. п. Кастомные типы постов позволяют добавлять дополнительные поля. Таким образом, добавление биографии будет следующим: Заголовок записи - Имя человека, Текст записи - биография, Миниатюры - фото человека, годы жизни, дополнительные фотографии. Можно создавать сколько угодно дополнительных полей.
    После этого вам нужно в вашем WordPress-шаблоне вывести все дополнительные поля.

    Почитатать подробнее про это на русском можно здесь.
    Ответ написан
    Комментировать
  • Wordpress. Как вывести поля созданные в плагине pods, на страницы сайта?

    @TraiDeR
    Для отображения произвольных полей, необходимо создать в вашем шаблоне файл single-name_pod.php, где name_pod это название вашего произвольного типа поста. Этот файл аналогичен файлу single.php, единственное, в него необходимо добавить вывод произвольных полей. Сделать это можно с помощью кода:
    <?php echo get_post_meta( $post->ID, 'name-field', true );

    name-field - название вашего произвольного поля. Код нужно разместить внутри цикла.
    Подробную информацию можно найти в документации PODS
    Рекомендую к прочтению вот эту статью на русском: Произвольные типы постов и таксономии в WordPress
    Ответ написан
    Комментировать