Функция проверки существования заголовка в WordPress
29 июня 2012| Рубрика: Wordpress
Странно, но в API WordPress не нашел функции поиска одинаковых заголовков постов. Для моего плагина нужно было проверить, существует ли такой заголовок или нет. Пришлось написать собственную функцию для этого.
<?php function my_post_exists($mytitle){ global $wpdb; $mytitle=strtoupper($mytitle); //преобразуем строку в верхний регистр $mytitle = trim($mytitle, ' '); //удаляем пробелы из начала и конца строки if ($mytitle==''){ //если передана пустая строка return true; } $sql = $wpdb->get_col("SELECT post_title FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_title"); foreach($sql as $foundtitle){ $foundtitle=strtoupper($foundtitle); //преобразуем строку в верхний регистр if($mytitle==$foundtitle){ return true; //такой тайтл существует } } return false; //такой тайтл не существует } ?>
У меня данный код отлично работает на сайте yandexcatalog.org. Конечно, он не идеален — при большом количестве постов его следует оптимизировать. Например, SQL-запросом выбирать не все записи, а лишь из той рубрики, в которую собираетесь опубликовать пост. Но мне пока такого решения вполне достаточно. Хотя, если знаете способ лучше — прошу в комментарии 😉