Добрый вечер! Помогите пожалуйста разобраться. Код работает, но коряво.
Во время выполнения кода, я получаю все записи со статусом Draft, проверяю, есть ли в них русские символы, если да, то удаляю запись, если нет, что делаю апдейт записи и присваиваю стачение Publish. Кроме того, во время обновления добавляю метки. Порядок их формирования: выбираю слова с самым большим количеством повторений, ограничиваютсь тремя и с помощью функции добавляю их в запись.
Что работает не так как надо?
Не правильно считает количество слов и не сортирует их по количеству. Т.е. если слово "Small" встречается в тексте 7 раз, код игнорирует это и добавляет другое слово, которое, к примеру, употребляется в тексте не то что меньше 7, но может быть и 1 раз. Так же функция, которая добавляет в запись метки, употребляется мной в цикле. Можно ли как-то получить массив и единожды добавить его в эту функцию, но так, чтобы она находилась вне цикла. (чтобы не вызывать ее множество раз во время перебора цикла)
global $post;
$args = array( 'posts_per_page' => 5, 'post_status' => 'draft', 'posts_per_page' => '10' );
$myposts = get_posts( $args );
foreach( $myposts as $post ){ setup_postdata($post);
if ( preg_match("/[А-Яа-я]/u", get_the_content()) or (strpos(get_the_content(), '<img alt="">') == true) or preg_match("/[А-Яа-я]/u", get_the_title()))
{ wp_delete_post( get_the_ID(), true ); } else {
$pizza = strip_tags(get_the_content());
$pieces = explode(" ", $pizza);
foreach($pieces as $val) {
uasort($pos);
$pos[$val] = substr_count($pizza, $val);
$ie==0;
foreach($pos as $key => $cal)
if (iconv_strlen($key) > 4) {
{
$poik = preg_replace('/[^ a-z\d]/ui', '',$key );
wp_set_post_tags( get_the_ID(), $poik, true );
if($ie==3) {break;}
}
$ie++;
}
$postData = [ 'ID' => get_the_ID(), 'post_status' => 'publish' ];
wp_update_post( $postData );
}}
}