尝试创建要在弹出窗口中实现的短代码。我试图在页面中心以2x2的网格显示四幅图像。问题是这个短代码现在将所有内容都浮动,图像垂直显示在彼此的顶部,而不是在页面中心显示2x2。
此外,当我在弹出窗口中实现快捷代码时,显示在每个页面顶部(页面内容之前)的内容不会显示在弹出窗口中。
I\'ve tried:
ob_start();
return ob_get_clean();
这会阻止它显示在每个页面的头部,但它也不会输出任何其他内容。
我做错了什么?
在这里添加我的短代码功能,并在下面添加2x2网格布局的CSS。
Shortcode Function:
<?php
function my_function() {
$args = array (
\'post_type\' => \'my_cpt\',
\'nopaging\' => false,
\'posts_per_page\' => \'4\',
\'order\' => \'ASC\',
\'orderby\' => \'rand\',
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
$image = get_field(\'my_image_field\');
$size = \'medium\';?>
<div class="grid2x2">
<div class="thegridbox">
<div>\'
?><a href="<?php the_field(\'my_image_link\'); ?> ">
<img src="<?php wp_get_attachment_image( $image, $size ); ?>" />
</a>
</div>
</div>
</div>
<?php
}
} else {
echo \'Oops! Nothing found.\';
}
wp_reset_postdata();
}
add_shortcode( \'my_shortcode\', \'my_function\' );
?>
CSS for the 2x2 frid layout:
.grid2x2 {
min-height: 100%;
display: flex;
flex-wrap: wrap;
flex-direction: row;
}
.grid2x2 > div {
display: flex;
flex-basis: calc(50% - 40px);
justify-content: center;
flex-direction: column;
}
.grid2x2 > div > div {
display: flex;
justify-content: center;
flex-direction: row;
}
.thegridbox { margin: 20px; }