Intereting Posts

Подготовьте или добавьте изображение в содержание сообщения

Я работаю с дочерней темой и файлом functions.php, чтобы добавить изображение на сообщения с определенным тегом ( Videos в коде). Я пытался создать функцию, но у меня есть некоторые проблемы, а именно, что на сайте, когда я загружаю сообщение с этим тегом, он сбой, похоже, что он остается в цикле, и после этого мне нужно вручную удалить все повторяющиеся изображения (я просто хочу) из сообщений в базе данных (PhpMyAdmin)

Не могли бы вы помочь мне решить проблему и иметь рабочий код?

Важное обновление : я использую RSS-канал, и мне нужно, чтобы изображение тоже было в фиде (я имею в виду в базе данных таблиц столбцов)

Вот мой код в functions.php :

 /** * Prepend image to post if it has a specific tag * * @param String $content - WP Post Content for display * * @return String $content - WP Post Content for display */ function theme_videos_append_image( $content ) { global $post; // It would be easier if you got this URL from Attachment ID $upload_dir_arr = wp_upload_dir(); // Get upload directory array ( https://developer.wordpress.org/reference/functions/wp_upload_dir/#user-contributed-notes ) $static_image_url = $upload_dir_arr['baseurl'] . '/2017/11/upliftingscroll.jpg'; // Ensure we are viewing a Post, and it has the Videos tag if( has_tag( 'Videos', $post->ID ) ) { $has_image = get_post_meta( $post->ID, '_video_image_added', true ); // Check if our postmeta exists // If is does not have our postmeta - add it if( empty( $has_image ) ) { $image = sprintf( '<p><img src="%1$s" alt="" class="img-responsive" /></p>', $static_image_url ); // Create image $content = $image . $content; // prepend image // Update post so we don't need to add the image again $success = wp_update_post( array( 'ID' => $post->ID, 'post_content' => $image . $post->post_content, ) ); // If the post updated, create postmeta letting us know later it has the image if( false !== $success && !is_wp_error( $success ) ) { update_post_meta( $post->ID, '_video_image_added', true ); } } } return $content; } add_filter( 'the_content', 'theme_videos_append_image' ); 

Heres более простая версия вашей функции:

 <?php add_filter( 'the_content', 'theme_videos_append_image' ); function theme_videos_append_image( $content ) { global $post; $upload_dir_arr = wp_upload_dir(); $static_image_url = $upload_dir_arr['baseurl'] . '/2017/11/upliftingscroll.jpg'; $tag = '<p><img src="' . $static_image_url . '" alt="" class="img-responsive" /></p>'; return has_tag( 'Videos', $post->ID ) ? $tag . $content : $content; } ?> 

Проверьте, является ли это самым элегантным решением для получения URL-адреса изображения. Кажется немного странным для меня.

Возможно, указанный вами цикл существует, поскольку в the_content также может применяться фильтр the_content . Поэтому, если вы хотите придерживаться своего решения, попробуйте сначала добавить мета-сообщение, а затем обновить содержимое сообщения … но я не думаю, что это необходимо.

Расширение решений Johannes Grandy. Вы также должны подключиться к фильтру the_excerpt_rss , выполнив:

 add_filter('the_excerpt_rss', 'theme_videos_append_image'); add_filter( 'the_content', 'theme_videos_append_image' ); function theme_videos_append_image( $content ) { global $post; $upload_dir_arr = wp_upload_dir(); $static_image_url = $upload_dir_arr['baseurl'] . '/2017/11/upliftingscroll.jpg'; $tag = '<p><img src="' . $static_image_url . '" alt="" class="img-responsive" /></p>'; return has_tag( 'Videos', $post->ID ) ? $tag . $content : $content; }