👨🏻💻 Как упростись цепочку условий для фильтра на wordpress?
Есть каталог фильмов на wordpress, где в метатегах постов хранится информация о жанрах, рейтинге и т.п.
Сделана возможность фильтровать по рейтингу (число), жанру (строка) или по умолчанию только по id (число) - это работает, но получается нагромождение из простыни условий.
Как можно упростить цепочку условий, особенно если понадобится добавить новые параметры для фильтра?
Есть каталог фильмов на wordpress, где в метатегах постов хранится информация о жанрах, рейтинге и т.п.
Сделана возможность фильтровать по рейтингу (число), жанру (строка) или по умолчанию только по id (число) - это работает, но получается нагромождение из простыни условий.
Как можно упростить цепочку условий, особенно если понадобится добавить новые параметры для фильтра?
if (isset($rating) || isset($genre)) {PHP задачи с собеседований
if (isset($rating) && isset($genre)) {
$query = new WP_Query(array(
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'film_rating',
'value' => $rating,
),
array(
'key' => 'film_kind',
'value' => $genre,
),
array(
'key' => 'film_id',
'value' => $films,
'compare' => 'IN'
),
),
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1
));
} else if (isset($rating)) {
$query = new WP_Query(array(
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'film_rating',
'value' => $rating,
),
array(
'key' => 'film_id',
'value' => $films,
'compare' => 'IN'
),
),
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1
));
} else if (isset($genre)) {
$query = new WP_Query(array(
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'film_kind',
'value' => $genre,
),
array(
'key' => 'film_id',
'value' => $films,
'compare' => 'IN'
),
),
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1
));
}
} else {
$query = new WP_Query(array(
'meta_query' => array(
array(
'key' => 'film_id',
'value' => $films,
'compare' => 'IN'
),
),
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1
));
}
👎7👍3
Forwarded from BZD • Книги для программистов
Великий Китайский Файрвол.pdf
3.5 MB
📔 Title: Великий Китайский Файрвол
#book #programming #RU
🌐 Lang.: Russian
🧔 Author: Джеймс Гриффитс
🕘 Year: 2022
📑 Pages: 430
#️⃣ ISBN: -
📝 Description: Фраза "интернет помнит все" обрела второй смысл — контент стал подконтролен, иллюзия анонимности исчезла. Книга рассказывает о том, как Китай первым в мире научился управлять интернетом и как другие страны перенимали его опыт.
@bzd_channel
#book #programming #RU
🌐 Lang.: Russian
🧔 Author: Джеймс Гриффитс
🕘 Year: 2022
📑 Pages: 430
#️⃣ ISBN: -
📝 Description: Фраза "интернет помнит все" обрела второй смысл — контент стал подконтролен, иллюзия анонимности исчезла. Книга рассказывает о том, как Китай первым в мире научился управлять интернетом и как другие страны перенимали его опыт.
@bzd_channel
Forwarded from BZD • Книги для программистов
Kak_napisat_i_prodat_svoy_PHP_skript.pdf
1.5 MB
📔 Title: Как написать и продать свой PHP скрипт
#book #php #RU
🌐 Lang.: Russian
🧔 Author: Самуэль Акопян
🕘 Year: 2021
📑 Pages: 86
#️⃣ ISBN: -
📝 Description: Вы написали свой первый PHP скрипт и хотите его продать. Эта книга поможет Вам с пошаговой инструкцией в этом начинании, а также подскажет как избежать распространённых ошибок при создании и продаже своего собственного программного обеспечения.
– всё сказанное здесь является результатом личного жизненного опыта автора;
– мнение автора может не совпадать с мнением читателей по многим вещам и это нормально;
– не надо пугаться; – везде по тексту словосочетание “PHP скрипт” можно заменить на “C++ программу”, “мобильную аппликацию” или “мою супер-дупер application”;
– это не монография с замахом на докторскую диссертацию, скорее небольшая инструкция к действию для тех, кто в лодке (ну или собирается в неё запрыгнуть);
@bzd_channel
#book #php #RU
🌐 Lang.: Russian
🧔 Author: Самуэль Акопян
🕘 Year: 2021
📑 Pages: 86
#️⃣ ISBN: -
📝 Description: Вы написали свой первый PHP скрипт и хотите его продать. Эта книга поможет Вам с пошаговой инструкцией в этом начинании, а также подскажет как избежать распространённых ошибок при создании и продаже своего собственного программного обеспечения.
– всё сказанное здесь является результатом личного жизненного опыта автора;
– мнение автора может не совпадать с мнением читателей по многим вещам и это нормально;
– не надо пугаться; – везде по тексту словосочетание “PHP скрипт” можно заменить на “C++ программу”, “мобильную аппликацию” или “мою супер-дупер application”;
– это не монография с замахом на докторскую диссертацию, скорее небольшая инструкция к действию для тех, кто в лодке (ну или собирается в неё запрыгнуть);
@bzd_channel
🔥1
📌 Реальная ситуация
В скрипте делается вывод заголовков.
Дальше идет вывод кэша из файла.
Ответ сервера:
PHP задачи с собеседований
В скрипте делается вывод заголовков.
$modified_date = strtotime('2023-02-09 17:25:05');Если после этого идет сразу exit то заголовок выдается.
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $modified_date).' GMT');
Дальше идет вывод кэша из файла.
$cacheFile = '/cache.txt';сразу пропадает строка Last-Modified.
$html = file_get_contents($cacheFile);
echo $html;
exit;
Ответ сервера:
HTTP/1.1 200 OKНе понятно как file_get_contents может отменять заголовок? headers_list() заголовок показывает.
Server: nginx/1.14.1
Date: Tue, 21 Feb 2023 07:44:31 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/7.2.24
Strict-Transport-Security: max-age=31536000;
Content-Encoding: gzip
PHP задачи с собеседований
👍1
❓Что можно сократить в данном php коде?
<?php
function getClosest($search, $array)
{
$num = null;
foreach ($array as $item) {
if ($item['chance'] < $search) {
continue;
}
if ($num === null || $item['chance'] < $num['chance']) {
$num = $item;
}
}
return $num;
}
$case_cost = 100;
$skins = [
$skin = ['cost' => 10000],
$skin = ['cost' => 0.01],
$skin = ['cost' => 5256],
$skin = ['cost' => 425.2],
$skin = ['cost' => 92.4],
$skin = ['cost' => 3124],
$skin = ['cost' => 0.32],
$skin = ['cost' => 213],
];
$array_chance = [];
$array_sum = 0;
foreach ($skins as $item) {
if ($case_cost >= $item['cost']) {
$result = $case_cost / $item['cost'];
} else {
$result = $case_cost * $item['cost'] / 100;
}
$result = round($result);
$array_sum += $result;
array_push($array_chance, $result);
}
$rand_num = rand(0, $array_sum);
$i = 0;
$accum = 0;
foreach ($array_chance as $skin) {
$skins[$i]['chance'] = $skin;
$i++;
}
$accum = 0;
foreach ($skins as &$skin) {
$accum = $skin['chance'] += $accum;
}
print_r($skins);
$rand_element = getClosest($rand_num, $skins);
echo '<br>' . $rand_num . '<br>';
print_r($rand_element);
PHP задачи с собеседований
<?php
function getClosest($search, $array)
{
$num = null;
foreach ($array as $item) {
if ($item['chance'] < $search) {
continue;
}
if ($num === null || $item['chance'] < $num['chance']) {
$num = $item;
}
}
return $num;
}
$case_cost = 100;
$skins = [
$skin = ['cost' => 10000],
$skin = ['cost' => 0.01],
$skin = ['cost' => 5256],
$skin = ['cost' => 425.2],
$skin = ['cost' => 92.4],
$skin = ['cost' => 3124],
$skin = ['cost' => 0.32],
$skin = ['cost' => 213],
];
$array_chance = [];
$array_sum = 0;
foreach ($skins as $item) {
if ($case_cost >= $item['cost']) {
$result = $case_cost / $item['cost'];
} else {
$result = $case_cost * $item['cost'] / 100;
}
$result = round($result);
$array_sum += $result;
array_push($array_chance, $result);
}
$rand_num = rand(0, $array_sum);
$i = 0;
$accum = 0;
foreach ($array_chance as $skin) {
$skins[$i]['chance'] = $skin;
$i++;
}
$accum = 0;
foreach ($skins as &$skin) {
$accum = $skin['chance'] += $accum;
}
print_r($skins);
$rand_element = getClosest($rand_num, $skins);
echo '<br>' . $rand_num . '<br>';
print_r($rand_element);
PHP задачи с собеседований
👍5
📌 Переместить запись из кастомного типа поста в др. рубрику при наступлении условия (wordpress)
Есть кастомный тип постов "Мероприятия". В нем две рубрики: ближайшие и архивные. Понятно, что при создании все события попадают в ближайшие. А как сделать так, чтобы после прошествия дня события, оно автоматически меняло рубрику, а не админ вручную переставлял привязку. С помощью acf7 создано кастомное поле даты. И есть следующий код:
Где ошибка или как это правильно/лучше сделать?
PHP задачи с собеседований
Есть кастомный тип постов "Мероприятия". В нем две рубрики: ближайшие и архивные. Понятно, что при создании все события попадают в ближайшие. А как сделать так, чтобы после прошествия дня события, оно автоматически меняло рубрику, а не админ вручную переставлял привязку. С помощью acf7 создано кастомное поле даты. И есть следующий код:
function update_event_taxonomy() {Однако при его выполнении, с тех событий, которые подпадают под условие чекбоксы с "ближайшие мероприятия" снимаются и к архивным они не привязываются, чекбокс не проставляется.
$today = date('Y-m-d');
$args = array(
'post_type' => 'events',
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'event_date',
'value' => $today,
'compare' => '<',
'type' => 'DATE',
),
),
);
$event_posts = get_posts($args);
foreach ($event_posts as $event_post) {
$event_date = get_field('event_date', $event_post->ID);
$event_tax = ($event_date < $today) ? 'archive' : 'upcoming';
wp_set_post_terms($event_post->ID, $event_tax, 'events_category', false);
}
}
function schedule_event_taxonomy_update() {
if (!wp_next_scheduled('update_event_taxonomy')) {
wp_schedule_event(time(), 'hourly', 'update_event_taxonomy');
}
}
add_action('wp', 'schedule_event_taxonomy_update');
Где ошибка или как это правильно/лучше сделать?
PHP задачи с собеседований
👎12👍1
👨🏻💻 Реши задачу
Дан массив ["Dima", 11, true, null, [33,44], 1.23]. Нужно вывести информацию о его элементах на экран. Каждый вывод информации об элементе массива должен нумероваться, начиная с единицы. Для решения задачи используйте цикл foreach и функцию var_dump().
PHP задачи с собеседований
Дан массив ["Dima", 11, true, null, [33,44], 1.23]. Нужно вывести информацию о его элементах на экран. Каждый вывод информации об элементе массива должен нумероваться, начиная с единицы. Для решения задачи используйте цикл foreach и функцию var_dump().
PHP задачи с собеседований
👨🏻💻 Решение задачи 👆🏻
<?phpPHP задачи с собеседований
//Массив с переменными
$m=["Dima", 11, true, null, [33,44], 1.23];
//Выводим данные о значениях массива
foreach($m as $key=>$val){
//Чтобы нумерация шла с 1
$n=$key+1;
//Выводим информацию об элементе массива
var_dump($val);
echo " - {$n}-й элемент массива<br>";
}
?>
👎15👍3
👨🏻💻 Реши задачу
Создайте массив, в который поместите все натуральные числа, не превышающие 15. Отфильтруйте полученный массив при помощи функции array_filter(), удалив из массива все нечетные значения. Выведите оставшиеся элементы массива на экран.
PHP задачи с собеседований
Создайте массив, в который поместите все натуральные числа, не превышающие 15. Отфильтруйте полученный массив при помощи функции array_filter(), удалив из массива все нечетные значения. Выведите оставшиеся элементы массива на экран.
PHP задачи с собеседований
👎5👍2
👨🏻💻 Решение задачи 👆🏻
<?php
//Создаем пустой массив. Можно и $m=array();
$m=[];
//Циклом заполняем его
for($n=1;$n<=15;$n++){
//Добавляем текущее число n в массив
$m[]=$n;
}
//Создаем callback-функцию для фильтрации элементов
function my_func($val){
//Если элемент массива нечетное число
if($val%2!=0){
//Возвращаем FALSE, чтобы элемент был удален из массива
return false;
}
//Возвращаем TRUE для четного элемента массива
return true;
}
//Фильтруем элементы массива
$m = array_filter($m,"my_func");
//Выводим четные элементы массива на экран через пробел
foreach($m as $value){
echo $value.' ';
}
?>
PHP задачи с собеседований
<?php
//Создаем пустой массив. Можно и $m=array();
$m=[];
//Циклом заполняем его
for($n=1;$n<=15;$n++){
//Добавляем текущее число n в массив
$m[]=$n;
}
//Создаем callback-функцию для фильтрации элементов
function my_func($val){
//Если элемент массива нечетное число
if($val%2!=0){
//Возвращаем FALSE, чтобы элемент был удален из массива
return false;
}
//Возвращаем TRUE для четного элемента массива
return true;
}
//Фильтруем элементы массива
$m = array_filter($m,"my_func");
//Выводим четные элементы массива на экран через пробел
foreach($m as $value){
echo $value.' ';
}
?>
PHP задачи с собеседований
👎17👍3
❓Реальный вопрос от пользователя
Проблема php не работает
Я скачал vs code и установил расширение php
Но когда я запустил оно вывело ошибку:
Error: spawn php ENOENT at Process.ChildProcess._handle.onexit (node:internal/child_process:283:19) at onErrorNT (node:internal/child_process:478:16) at processTicksAndRejections (node:internal/process/task_queues:83:21) { errno: -4058, code: 'ENOENT', syscall: 'spawn php', path: 'php', spawnargs: [ 'C:\Users\78822\OneDrive\Рабочий стол\.run on bobr\chat\aftorizatua.phtml' ] }
Я смотрел в интернете но там было про другие языки программирования. вот код:
PHP задачи с собеседований
Проблема php не работает
Я скачал vs code и установил расширение php
Но когда я запустил оно вывело ошибку:
Error: spawn php ENOENT at Process.ChildProcess._handle.onexit (node:internal/child_process:283:19) at onErrorNT (node:internal/child_process:478:16) at processTicksAndRejections (node:internal/process/task_queues:83:21) { errno: -4058, code: 'ENOENT', syscall: 'spawn php', path: 'php', spawnargs: [ 'C:\Users\78822\OneDrive\Рабочий стол\.run on bobr\chat\aftorizatua.phtml' ] }
Я смотрел в интернете но там было про другие языки программирования. вот код:
<!DOCTYPE html>если найдёте как исправить пожалуйста напишите!
<html>
<head>
<title>авторизация</title>
</head>
<body>
введите логин: <input type="text" name="login" size="20" placeholder="введите логин" onClick="alert('Это сообщение!')"><br>
введите пароль: <input type="text" name="password" size="20" placeholder="введите пароль"><br>
<?php
$login=$_POST["login"];
$password=$_POST["password"];
echo $password;
echo $login;
?>
</body>
</html>
PHP задачи с собеседований
👎3🎉1
Доступ для 25 человек в нашу закрытую библиотеку книг: @dblib
👨🏻💻 Реши задачу
Вычислите выражение (sin30°+3/4)/|1/5-3/7|+log10100. Для решения используйте математические функции, имеющиеся в PHP.
PHP задачи с собеседований
Вычислите выражение (sin30°+3/4)/|1/5-3/7|+log10100. Для решения используйте математические функции, имеющиеся в PHP.
PHP задачи с собеседований
👍2
👨🏻💻 Решение задачи 👆🏻
<?php
//Создаем пустой массив. Можно и $m=array();
$m=[];
//Циклом заполняем его
for($n=1;$n<=15;$n++){
//Добавляем текущее число n в массив
$m[]=$n;
}
//Создаем callback-функцию для фильтрации элементов
function my_func($val){
//Если элемент массива нечетное число
if($val%2!=0){
//Возвращаем FALSE, чтобы элемент был удален из массива
return false;
}
//Возвращаем TRUE для четного элемента массива
return true;
}
//Фильтруем элементы массива
$m = array_filter($m,"my_func");
//Выводим четные элементы массива на экран через пробел
foreach($m as $value){
echo $value.' ';
}
?>
PHP задачи с собеседований👎3👍1
👨🏻💻 Реши задачу
Напишите простейший скрипт счетчика посещений страницы на основе сессий. Для хранения данных счетчика используйте суперглобальный массив $_SESSION.
PHP задачи с собеседований
Напишите простейший скрипт счетчика посещений страницы на основе сессий. Для хранения данных счетчика используйте суперглобальный массив $_SESSION.
PHP задачи с собеседований
👨🏻💻 Решение задачи 👆🏻
<?phpPHP задачи с собеседований
//Стартуем сессию
session_start();
//Проверяем, запущен ли счетчик
if(isset($_SESSION['times'])){
//увеличиваем его значение на единицу
$_SESSION['times']+=1;
}else{
//иначе присваиваем счетчику начальное значение
$_SESSION['times']=1;
}
//Выводим информацию на экран
echo 'Количество посещений страницы: '.$_SESSION['times'];
?>
👍7
Forwarded from BZD • Книги для программистов
С_М_Абрамов_Методы_метавычислений_и_их_применение.pdf
987.8 KB
📔 Title: Методы метавычислений и их применение
#book #RU
🌐 Lang.: Russian
🧔 Author: С. М. Абрамов
🕘 Year: 2021
📑 Pages: 199
#️⃣ ISBN: 978-5-4499-0079-1
📝 Description: Книга сотрудника Института программных систем РАН,
представляющая собой описание вопросов теории метавычислений и их применения. Метавычисления — раздел теории и практики программирования, посвященный разработке методов анализа и преобразования программ за счет реализации конструктивных метасистем (метапрограмм) над программами.
В книге приводятся основные понятия метавычислений, примеры построения и использования простых метапрограмм. Изложение рассчитано на специалистов в области программирования.
Для научных сотрудников и студентов, изучающих методы автоматического преобразования программ или проводящих исследования в данной области.
@bzd_channel
#book #RU
🌐 Lang.: Russian
🧔 Author: С. М. Абрамов
🕘 Year: 2021
📑 Pages: 199
#️⃣ ISBN: 978-5-4499-0079-1
📝 Description: Книга сотрудника Института программных систем РАН,
представляющая собой описание вопросов теории метавычислений и их применения. Метавычисления — раздел теории и практики программирования, посвященный разработке методов анализа и преобразования программ за счет реализации конструктивных метасистем (метапрограмм) над программами.
В книге приводятся основные понятия метавычислений, примеры построения и использования простых метапрограмм. Изложение рассчитано на специалистов в области программирования.
Для научных сотрудников и студентов, изучающих методы автоматического преобразования программ или проводящих исследования в данной области.
@bzd_channel
💻 Weekend Offer для PHP-разработчиков от VK скоро начнется 24-26 марта
Если вы хотите создавать простые и удобные инструменты коммуникации и продукты, которыми ежедневно пользуются миллионы — отправляйте заявку до 23 марта. Вы получите шанс присоединиться к одной из шести команд ВКонтакте: команде потребления контента и рекомендаций, команде контента, команде поиска, команде NFT, команде pазвития суперприложения или команде UX.
✅ Будут рассмотрены также кандидатуры разрабов, которые пишут и на других языках, если они владеют PHP и готовы переходить на него.
➡️ Чтобы отправить отклик, переходите по ссылке.
PHP задачи с собеседований
Если вы хотите создавать простые и удобные инструменты коммуникации и продукты, которыми ежедневно пользуются миллионы — отправляйте заявку до 23 марта. Вы получите шанс присоединиться к одной из шести команд ВКонтакте: команде потребления контента и рекомендаций, команде контента, команде поиска, команде NFT, команде pазвития суперприложения или команде UX.
✅ Будут рассмотрены также кандидатуры разрабов, которые пишут и на других языках, если они владеют PHP и готовы переходить на него.
➡️ Чтобы отправить отклик, переходите по ссылке.
PHP задачи с собеседований