turbomen24
Ответы в темах
-
Конечно, я нашёл решение — вместо того, чтобы вызывать где-либо эту функцию, повесил на хук after_setup_theme и проверяю, отправлен ли запрос POST с заданным ключом, тогда это работает.
add_action( 'after_setup_theme', 'custom_registration' ); function custom_registration() { if(isset($_POST["wp-submit"])) { $userdata = array( 'user_login' => $_POST['user_login'], 'user_pass' => $_POST['user_pass'], 'user_email' => $_POST['user_email'] ); $user_id = wp_insert_user( $userdata ); $login_data = array(); $login_data['user_login'] = $_POST['user_login']; $login_data['user_password'] = $_POST['user_pass']; $user = wp_signon( $login_data, false ); wp_clear_auth_cookie(); wp_set_current_user($user->ID); wp_set_auth_cookie($user->ID, true); $cuser = wp_get_current_user(); } }
wp_insert_user возвращает id, сама форма работает, пользователь создаётся.
Как его теперь авторизовать, зная id?А, ну точно, есть же ещё term_meta, я про это совсем забыл. Большое спасибо!
Решение найдено.
$terms = get_terms( array( 'taxonomy' => 'movies', 'hide_empty' => 0, ) ); foreach( $terms as $k => $term ){ $fl = get_first_letter( $term->name ); $prev_fl = isset( $terms[ ($k-1) ] ) ? get_first_letter( $terms[ ($k-1) ]->name ) : ''; if( $prev_fl !== $fl ) echo $fl . '<br>'; echo '<li>' . ' <a href="' . get_term_link($term) . '">' . $term->name . '</a> ' . '</li>'; } function get_first_letter( $str ){ return mb_substr($str, 0, 1, 'utf-8'); }
Форум: Проблемы и решения
Тема: Расширенный поиск с CheckboxЕсли проверять как массив, то всё работает правильно!
Конечно же, я изучаю php, чтобы понимать примеры, которые беру за основу и то, что пишу сам, но что-то всегда можно упустить.
Задача решена, вопрос закрыт.
Большое спасибо!Форум: Проблемы и решения
Тема: Расширенный поиск с CheckboxБольшое спасибо за ответ, я пробовал массив
name="post_type[]"
, да, конечно поиск производится по двум типам постов только если указать"post_type[]
, но тогда чек-боксы вообще не выставляются на следующей странице.
Может, кто-то сталкивался с подобной задачей, сделать поиск по категориям, типам постов, через чекбоксы, которые должны оставаться отмеченными?Я нашёл вот такое решение в интернете, но это, пожалуй, костыли, так как в этом случае нужно две формы поиска, и выбор чекбоксов доступен только на второй странице, поэтому я решил использовать
isset()
.Вот мой код, который я использую для формы:
<form role="search" class="search-box" method="get" action="<?php echo home_url( '/' ); ?>"> <input type="search" autocomplete="off" class="search-field" placeholder="<?php echo esc_attr_x( 'Search …', 'placeholder' ) ?>" value="<?php the_search_query(); ?>" name="s" title="<?php echo esc_attr_x( 'Search for:', 'label' ) ?>" /> <input type="checkbox" name="post_type[]" value="page" <?php if(isset($_GET["post_type"]) and ($_GET["post_type"] == 'page' )) echo ' checked="checked"'; ?> /> <label>Page</label> <input type="checkbox" name="post_type[]" value="post" <?php if(isset($_GET["post_type"]) and ($_GET["post_type"] == 'post' )) echo ' checked="checked"'; ?> /> <label>Post</label> <button class="btn-search-head"> <div class="search_icon_head"> <i class="fas fa-search"></i> </div> </button> </form>
В таком варианте поиск можно производить сразу и по страницам, и по записям, если выбрать оба чекбокса, но на следующей странице они не отмечены.
Если использоватьname="post_type"
, то поиск можно производить только по одному типу, даже если отметить оба, но один из чекбоксов будет отмечен.- Ответ изменён 4 года, 1 месяц назад пользователем turbomen24.
- Ответ изменён 4 года, 1 месяц назад пользователем turbomen24.
- Ответ изменён 4 года, 1 месяц назад пользователем turbomen24.
- Ответ изменён 4 года, 1 месяц назад пользователем turbomen24.
Форум: Проблемы и решения
Тема: Расширенный поиск с Checkbox@yube
«cheched()» — я имел ввиду, конечно же, функцию «checked()».
Большое спасибо, это работает, но если перед нажатием кнопки «поиск» я отмечу оба типа записей (page и post), то при переходе на страницу результатов чекбокс будет отмечен только один из двух, но поиск будет производиться по двум типам постов. Почему так происходит?Нашёл решение. Если добавлять слаг = / , то ничего не работает. Поэтому удаляем слаг с помощью функции:
function nameofmeta_remove_slug( $post_link, $post, $leavename ) {
if ( ‘nameofmeta’ != $post->post_type || ‘publish’ != $post->post_status ) {
return $post_link;
}
$post_link = str_replace( ‘/’ . $post->post_type . ‘/’, ‘/’, $post_link );
return $post_link;
}
add_filter( ‘post_type_link’, ‘nameofmeta_remove_slug’, 10, 3 );Затем этот код, чтобы не было ошибки 404:
function nameoftype_parse_request( $query ) {
if ( ! $query->is_main_query() || 2 != count( $query->query ) || ! isset( $query->query[‘page’] ) ) {
return;
}
if ( ! empty( $query->query[‘name’] ) ) {
$query->set( ‘post_type’, array( ‘post’, ‘nameoftype’, ‘page’ ) );
}
}
add_action( ‘pre_get_posts’, ‘nameoftype_parse_request’ );Если добавить стандартным образом слаг= / при регистрации типа поста и потом этот код, всё равно не работает. Но этот способ работает. Не забываем обновлять постоянные ссылке, если кто-то столкнулся с такой же проблемой.
Решение оказалось следующим:
Открываем файл content.php , находим строку <div class=»col-md-8 thumb-col»>
И меняем значение col-md-8 на col-md-0.
Дело в том, что даже если я отключал миниатюры постов, тема всё равно на них ссылалась, и оставляла пустое место для них. Таким образом, список постов в блоге, на странице поиска и категорий, стал визуально у правого края.@yube
Какой есть плагин, определяющий шаблоны для страниц?Дело в том, что если я убираю картинки из вывода записей (это можно сделать в настройках моей темы), то все записи на странице блога и на странице записей, отображаются по центру, с пустым местом слева, то есть, я полагаю, где-то засел код «center» в отображении, по которому это происходит, мне бы хотелось это поменять на , допустим «left».
@tuxfighter
Ну слушайте, это конечно понятно, но мой вопрос — где это находится в php файлах темы, поскольку я могу сам это изменить, но не могу найти место, где это находится.