logo помогаю бизнесу зарабатывать больше.
Связаться
Введите название услуги:

Создайте пост из каждого изображения в моей медиагалерее

24 января 2025 в 15:50 Wordpress

Если в вашей медиатеке есть изображение, вы можете просто просмотреть их и создать публикацию через wp_insert_post.

function import_post_from_imgs() {
  $images = get_posts('post_type=attachment&post_status=inherit&posts_per_page=-1');
  // just a minimal security check
  if ( ! current_user_can('publish_posts') ) return;
  if ( ! empty($images) ) { foreach ( $images as $image) {
    // prevent duplicate if for some reason the function is called more than once
    if ( get_post_meta($image->ID, '_imported', true) ) continue;
    $post = array(
      'post_title' => $image->post_title,
      'post_content' => '',
      'post_content' => 'publish'
    );
    // insert post
    $postid = wp_insert_post( $post );
    if ( $postid ) {
      // set the image as thumbnalil
      set_post_thumbnail($postid, $image->ID);
      update_post_meta($image->ID, '_imported', 1);
    }
  } }
}

function go_import_post_from_imgs() {
  if ( isset($_GET['import_images']) ) import_post_from_imgs();
}

add_action('admin_init', 'go_import_post_from_imgs');



В приведенном выше коде функция импорта запускается при инициализации администратора, когда $_GETустановлена ​​переменная «import_images».

Итак, вам нужно войти в свою панель управления, а затем URL вашей страницы будет выглядеть примерно так http://example.com/wp-admin/. Теперь просто вручную добавьте ‘?import_images=1’, чтобы ваш URL стал http://example.com/wp-admin/?import_images=1, и нажмите Enter .

Через несколько секунд вы увидите посты, созданные из изображений.

Имейте в виду, что эта функция создает пост из всех изображений, которые вы обновили. Если вы хотите исключить некоторые изображения, вы можете воспользоваться двумя способами:

  1. найдите идентификаторы изображений, которые вы хотите исключить, и добавьте эти 2 строки:
    $exclude = array(12, 256, 587); // the ids you want to skip
    if ( in_array($image->ID, $exclude) ) continue;
    

    доif ( get_post_meta($image->ID, '_imported', true) ) continue;

  2. Предыдущий метод хорош, если вы хотите исключить небольшое количество изображений, если вы хотите исключить больше, вы можете зарегистрировать пользовательскую таксономию для вложений и назначить определенный термин изображениям, которые вы хотите пропустить (например, «пропустить»). (Для этих задач вам может помочь чтение здесь ) . После этого, предположив, что ваша таксономия называется «media-tag» и вы добавили термин «пропустить» к изображениям, которые вы хотите пропустить, добавьте эту строку в то же место:
     if ( has_term('skip', 'media-tag', $image->ID) ) continue;

Похожие статьи

Оставить заявку
По любым вопросам пишите мне в мессенджеры .
Написать в WhatsApp
+7 (925) 444-48-89
Написать в Telegram
@max_webs
Ваша цена
Предложите свою цена за товар или услугу. Пишите мне в мессенджеры или оставьте заявку в данной форме.
Написать в WhatsApp
+7 (925) 444-48-89
Написать в Telegram
@max_webs
[contact-form-7 id="22192" title="Универсальная форма"]
[contact-form-7 id="114828" title="Рассчитать стоимость"]