divv

Рейтинг
149
Регистрация
02.02.2010
SeVlad #:

Ещё один дикий новомодный культ... Когда я первый раз увидел название "мануала" "Как сверстать тему на ACF" меня чуть удар не хватил. А теперь эта хрень так расплодилась... И ACF пихают где ни попадя.

И да - по телодвижениям это ничуть не проще чем даже те же мышевозки. Скорее даже сложнее, тк нужно не только кодить, но и учить как "это" вывести, да с обработкой ошибок (что для нуба совсем не очевидно).

Что там сложного?

Могу предложить тогда carbon fields. Возможностей еще больше, бесплатно, но нужно уметь кодить хотя бы на начальном уровне, скопировать/вставить, что-то отредактировать.


Элементор это тормоз, потом будете решать проблему со скоростью загрузки страницы.  И вообще я не вижу преимущества или простоты редактирования контента используя любые пейджбилдеры. Чтобы что-то отредактировать нужно 100 500 каких-то настроек сделать.

Самое оптимальное это сверстать блоки лендинга вручную и установить плагин произвольных полей, например acf pro. Pro потому, что там есть повторяемые поля(хотя и для бесплатной версии есть дополнение для повторяемых полей).

Настройку каждой секции лендинга в админке можно сделать внутри табов для удобства, секция 1, секция 2 и т.д. Слайдеры, раздел faq, список товаров сделать через повторяемые поля.

Dmitriy_2014 #:
Последний странный вопрос, если можно, если есть тут математики, подскажите если у меня получилось 0,001 секунда за 42 if’а, то типа чтобы код занял выполнение за 1 одну секунду нужно наклепать 42000 if’ов :-), по моим расчетам, хотя может что-то я не то насчитал.

Скинули бы весь код, может кто, что подскажет как сократить.

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

SeVlad #:

Ты вообще не понимаешь что у тебя написано. Функции is_ - это уже if.

Как впрочем и has_.

Как это может быть if?

Это true или false

отключение редиректа на похожие адреса


remove_action( 'template_redirect', 'redirect_canonical' );
Может при регистрации типа записи не включили
'has_archive'        => true,

Это влияет на основной запрос, тоесть включение страниц архива и пагинации.  WP_Query и add_rewrite_rule тогда вообще не стоит использовать.

Для изменения основного запроса нужно использовать хук pre_get_posts, например кол-во записей на странице изменить и т.д.

add_action('template_redirect', 'is_correct_url');
function is_correct_url() {

global $wp_query, $post;

$current_url = ((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];


    if (is_single() || is_page()) {
                
          $page_url = get_permalink($post);

        if ($current_url != $page_url) {
            $wp_query->set_404();
            status_header(404);
            include (get_query_template('404'));
            exit();
        }
                
        }      
        
         if (is_tax() && !is_paged()) {
                
          $page_url = get_term_link(get_queried_object_id());

        if ($current_url != $page_url) {
            $wp_query->set_404();
            status_header(404);
            include (get_query_template('404'));
            exit();
        }
                
        }
        
        
}

Svetogorik #:

Спасибо! Это то, что нужно!!! Вылетает моя 404 страница и ответ сервера 404.👍

Но на рубриках, если ввести на конце URL, например, @@@, то она все равно открывается с этими символами))Что можно добавить?:)

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

Еще способ

//проверка корректности урл страниц и записей
add_action('template_redirect', 'is_correct_url');
function is_correct_url() {

global $wp_query, $post;

$current_url = ((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];


    if (is_single() || is_page()) {
                
          $page_url = get_permalink($post);

        if ($current_url != $page_url) {
            $wp_query->set_404();
            status_header(404);
            include (get_query_template('404'));
            exit();
        }
                
        }      
}
svift #:
wp_count_posts

Эта функция не подойдет.


На страницах категорий используйте

global $wp_query;
$count = $wp_query->found_posts;
Всего: 552