嘿,我得到了从内容中获取第一幅图像的代码,从这个答案中,Get first image in a post 从…起Diana 但是对代码做了一些修改。因此,如果这有帮助,请标记该答案。
将代码插入functions.php
或者创建一个新插件。
function catch_that_image() {
global $post, $posts;
$first_img = \'\';
ob_start();
ob_end_clean();
// search for <img> elements inside the post content
$output = preg_match_all(\'/<img.+src=[\\\'"]([^\\\'"]+)[\\\'"].*>/i\', $post->post_content, $matches);
// $matches now contains an multidimensional array with all found <img> objects
// we go down the multiarray to find your image URL
$first_img = $matches [1] [0];
// check if there is an image
if(empty($first_img)){
// if no image is found in the content, we can add a default one
// if you dont want to use a default than just use \'\';
$first_img = \'/images/default.jpg\';
} else {
// is an image is found, create some markup and display it
$first_img = \'<img class="my-custom-post-image" src="\'.$first_img.\'">\';
}
return $first_img;
}
您需要修改
content.php
主题文件夹中的模板。(请使用子主题!)
在模板文件的顶部,您还将看到,如果您使用了特色图像,则此图像将已经显示!你不必在这里做这些:)
因此,添加一些更改:
<?php
/**
* The default template for displaying content
*
* Used for both single and index/archive/search.
*
* @package WordPress
* @subpackage Twenty_Fifteen
* @since Twenty Fifteen 1.0
*/
?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php
// new code starts
if (!is_singular()) { // dont display in single view, remove if not needed
echo catch_that_image();
}
// new code ends
// Post thumbnail.
twentyfifteen_post_thumbnail();
?>
<header class="entry-header">
在此之后,您肯定需要为新图像添加一些样式。查看代码内部,可以使用类对其进行样式化
my-custom-post-image
.