我试图在WordPress中以特殊格式显示发布日期。我成功地做了这个,但日期与帖子不对应。看起来我的while循环只占用帖子的第一个日期并将其应用于其他帖子。例如:我在网格中有3个帖子(post1,post2,post3),最近的帖子今天发布10 / feb,其他2个有不同的日期。我的网格将显示所有帖子的最新帖子的日期。 while循环位于生成每个帖子时调用的文件中。
这是我的代码:
$check = 1;
while (have_posts()) : the_post();
if ($check == 1) {
echo "<div class='vc-datewrapper'>";
echo "<div class='vc-datebox'>";
echo "<span class='vc-date'>";
$day = the_time('d');
echo "</span>";
echo "<span class='vc-month'>";
$day2 = the_time('M');
echo "</span>";
echo "</div></div></div>";
$check = 0;
}
endwhile;
我页面上的输出为:10 feb / 10 feb / 10 feb。现在我的问题是如何从每个帖子中明确获取日期而不是最近的3?
整个代码(视觉作曲家模板:vc_gitem_post_data.php)
<?php
if ( ! defined( 'ABSPATH' ) ) {
die( '-1' );
}
/**
* Shortcode attributes
* @var $atts
* Shortcode class
* @var $this WPBakeryShortCode_VC_Gitem_Post_Data
*/
$output = $text = $google_fonts = $font_container = $el_class = $css = $google_fonts_data = $font_container_data = $link_html = '';
extract( $this->getAttributes( $atts ) );
extract( $this->getStyles( $el_class, $css, $google_fonts_data, $font_container_data, $atts ) );
$data_source = $this->getDataSource( $atts );
if ( isset( $atts['link'] ) && '' !== $atts['link'] && 'none' !== $atts['link'] ) {
$link_html = vc_gitem_create_link( $atts );
}
$use_custom_fonts = isset( $atts['use_custom_fonts'] ) && 'yes' === $atts['use_custom_fonts'];
$settings = get_option( 'wpb_js_google_fonts_subsets' );
$subsets = '';
if ( is_array( $settings ) && ! empty( $settings ) ) {
$subsets = '&subset=' . implode( ',', $settings );
}
$content = '{{ post_data:' . esc_attr( $data_source ) . ' }}';
if ( ! empty( $link_html ) ) {
$content = '<' . $link_html . '>' . $content . '</a>';
}
$css_class .= ' vc_gitem-post-data';
if ( $data_source ) {
$css_class .= ' vc_gitem-post-data-source-' . $data_source;
}
if ( $use_custom_fonts && ! empty( $google_fonts_data ) && isset( $google_fonts_data['values']['font_family'] ) ) {
wp_enqueue_style( 'vc_google_fonts_' . vc_build_safe_css_class( $google_fonts_data['values']['font_family'] ), '//fonts.googleapis.com/css?family=' . $google_fonts_data['values']['font_family'] . $subsets );
}
$output .= '<div class="' . esc_attr( $css_class ) . '" >';
$style = '';
if ( ! empty( $styles ) ) {
$style = 'style="' . esc_attr( implode( ';', $styles ) ) . '"';
}
$output .= '<' . $font_container_data['values']['tag'] . ' ' . $style . ' >';
$output .= $content;
$output .= '</' . $font_container_data['values']['tag'] . '>';
$output .= '</div>';
$check = 1;
while (have_posts()) : the_post();
if ($check == 1) {
echo "<div class='vc-datewrapper'>";
// $categories = get_the_category();
// if ( ! empty( $categories ) ) {
// $vc_cat = esc_html( $categories[0]->name );
// echo "<div class='" . $vc_cat . "'>";
// }
echo "<div class='vc-datebox'>";
echo "<span class='vc-date'>";
get_the_date('d');
echo "</span>";
echo "<span class='vc-month'>";
the_time('M');
echo "</span>";
echo "</div></div></div>";
$check = 0;
}
endwhile;
echo $output;
提前感谢任何线索!
答案 0 :(得分:1)
我通过在Visual Composer wordpress插件中查找调用日期的函数来解决它。
看起来像这样:
function vc_gitem_template_attribute_post_datetime( $value, $data ) {
/**
* @var null|Wp_Post $post ;
*/
extract( array_merge( array(
'post' => null,
), $data ) );
return get_the_time( 'F j, Y g:i', $post->ID );
}
在这里你可以调整日期的显示。再次结束这个问题,谢谢你的答案。