случайный фон с MySQL вместо JQuery - PullRequest
0 голосов
/ 21 мая 2019

Прежде всего, я знаю, что могу сделать это с помощью jquery , но цель моего ответа - преодолеть поведение по умолчанию моего построителя тем / страниц на уровне базы данных, поэтому примите мой запроскак простая попытка, потому что я не очень хорошо с sql.

Я просто хочу сделать запрос, который рандомизирует фон определенного сообщения WordPress с ID = 222102. Путь фона объявлен в таблице wp_postsв столбце post_content следующим образом:

background_video_mp4="/wp-content/uploads/media/background.mp4"

очевидно, что это только часть всего post_content, а не всей записи.

Допустим, у меня есть список таких фонов, как этотодин:

/wp-content/uploads/media/background-1.mp4
/wp-content/uploads/media/background-2.mp4
/wp-content/uploads/media/background-3.mp4

Я знаю, что могу сделать этот запрос, чтобы заменить фон, но я пытаюсь понять, как рандомизировать этот запрос из списка выше.

update wp_posts set post_content =
replace(post_content,
'background_video_mp4="/wp-content/uploads/media/background.mp4"',
'background_video_mp4="/wp-content/uploads/media/background-1.mp4"');

Затем я хочу добавить этот запрос в мой functions.php, чтобы он выполнялся при каждом запросе страницы.большое спасибо

ОБНОВЛЕНИЕ: Я написал этот код в свой functions.php и работает хорошо

//mysql query for random home background video from db
function random_mp4_background() {
if ( is_front_page() && !wp_is_mobile() ) {
global $wpdb;
$wpdb->query(
    "
    UPDATE $wpdb->posts
    SET post_content = REGEXP_REPLACE(post_content, 
'background_video_mp4=\"\/wp-content/uploads/media/background(.*?)mp4', 
ELT(FLOOR(1 + (RAND() * (3-1))), 'background_video_mp4=\"\/wp- 
content/uploads/media/background-1.mp4', 
'background_video_mp4=\"\/wp-content/uploads/media/background-2.mp4'))
    WHERE ID = 222102
    "
);
}
$wpdb->flush();
}
add_action( 'wp_head', 'random_mp4_background');

К сожалению, если вы хотите кэшировать свою страницу с помощью плагина кэшированияЭто решение по сравнению с JQuery не является хорошим выбором, потому что вы всегда будете видеть один и тот же фон, даже если запрос выполняется правильно. Необходимо вручную очистить кэш или дождаться, пока он не будет сброшен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...