Прежде всего, я знаю, что могу сделать это с помощью 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 не является хорошим выбором, потому что вы всегда будете видеть один и тот же фон, даже если запрос выполняется правильно. Необходимо вручную очистить кэш или дождаться, пока он не будет сброшен.