- 21, Oct 2024
- #1
Я создал собственный запрос для веб-сайта, на котором у меня есть собственный тип сообщения с именем «Программа» (т.е.).
Предположим, у меня есть таксономия «Уровень», в которой у меня есть несколько вариантов выбора. То, как я построил код, позволяет создать столько страниц с одним и тем же заголовком, но с разной таксономией. Во внешнем интерфейсе я использую собственный WP_Query для получения всех сообщений с одинаковым заголовком и отображения меню, чтобы связать их все на основе «Уровней».
Но проблема в том, что клиент может ввести заголовок со специальными символами, например
like’
str_replace
.
Моя просьба выглядит так.
SELECT SQL_CALC_FOUND_ROWS ri_posts.* FROM ri_posts LEFT JOIN ri_term_relationships ON (ri_posts.ID = ri_term_relationships.object_id) WHERE 1=1 AND ri_posts.post_title = "Социальная сеть Domaine de l'univers" AND (
ri_term_relationships.term_taxonomy_id IN (5,6,7)
) AND ri_posts.post_type = 'discipline' AND (ri_posts.post_status = 'publish' OR ri_posts.post_status = 'acf-disabled' OR ri_posts.post_status = 'private') GROUP BY ri_posts.ID ORDER BY ri_posts.ID ASC LIMIT 0, 999
Все нормально, когда запрос ищет по названию без ’
. It breaks when I try to search by a title with '
.
Похоже, это нарушает SQL-запрос, в результате которого количество сообщений равно 0.
Есть ли способ создать своего рода фильтр, который может сказать %LIKE%, где я мог бы просто взять часть заголовка или просто что-то еще, что может обойти SELECT SQL_CALC_FOUND_ROWS ri_posts.* FROM ri_posts LEFT JOIN ri_term_relationships ON (ri_posts.ID = ri_term_relationships.object_id) WHERE 1=1 AND ri_posts.post_title = 'Domaine de l’univers социальный' AND (
ri_term_relationships.term_taxonomy_id IN (5,6,7)
) AND ri_posts.post_type = 'discipline' AND (ri_posts.post_status = 'publish' OR ri_posts.post_status = 'acf-disabled' OR ri_posts.post_status = 'private') GROUP BY ri_posts.ID ORDER BY ri_posts.ID ASC LIMIT 0, 999
?
Примечание: я не могу использовать my-program-post
my-program-post-2
my-program-post-3
parameter (https://codex.wordpress.org/Class_Reference/WP_Query#Search_Parameter), потому что, как вы можете видеть, у меня один и тот же заголовок для многих сообщений, поэтому фрагмент выглядит вот так
name
Пуля меня не ограничивает, т.к. предназначена для внутреннего использования.
Заранее спасибо. А пока буду продолжать искать работу.
РЕДАКТИРОВАТЬ 1: Дополнительные детали Если присмотреться к сгенерированному запросу, то у меня есть вот это.
'
Как видите, похоже, WordPress изменил мою '
to '
поэтому я получаю 0 сообщений по моему запросу.
Если я вручную изменю его на:
wp_reset_postdata();
// WP_Query arguments
$args = array(
'post_type' => 'program',
'title' => esc_sql(get_the_title()),
'orderby' => 'ID',
'order' => 'ASC',
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'level',
'field' => 'slug',
'terms' => array('level-one', 'level-two', 'level-three'),
)
)
);
// The Query
$breadcrumb = new WP_Query( $args );
it works.
Я также пытался создать фильтры %LIKE% или Custom's title
function but nothing works. It always returns this '
персонаж.
#wp-query #получить заголовок