使用帖子元列出帖子内容

问题描述 投票:0回答:2

我有一个为客户定制的 php 页面。本质上,此页面将按 post_meta 日期(称为 open_date)列出帖子。对于每个设置了 open_date 的项目,还包括另外 2 个 (open_start) 和 (open_close)。如果您还没有弄清楚,这是事件类型列表。

最终我想要的是一个脚本来获取带有此元的所有帖子并按顺序显示它们。下面是每个元值的示例。不太确定从哪里开始编写脚本,所以我的代码片段相当缺乏..

例如 开放日期 = 12/05/2011 open_start = 中午 12:10 open_close = 02:00 pm

以及到目前为止我的脚本

$masterquery = "SELECT * from wp_postmeta WHERE meta_key = 'open_date'";
$masterreslt = mysql_query($masterquery) or die(mysql_error());
while($masterdata = mysql_fetch_array($masterreslt)) {
    $new_array = $masterdata['meta_value'];
    if(!empty($masterdata['meta_value'])) {
        foreach($masterdata as $fullarray) {
            $post_id = $masterdata['post_id'];
            $open_date = $masterdata['open_date'];
            $open_start = $masterdata['open_start'];
            $open_close = $masterdata['open_close'];

            echo $post_id;
            echo '<br>';

            echo $open_date;
            echo '<br>';
        }

正如我所说,相当缺乏并且不太确定从哪里开始。以前从未在 WP 中做过这样的事情。

php wordpress
2个回答
0
投票

如果我理解正确的话,您想显示两个日期(开始和结束)之间的帖子 首先,您需要添加一个自定义字段(或元框),在其中输入两个日期,一个用于开始,一个用于芬兰。

<?php 
$c = 0; $loop = new WP_Query( array( 'post_type' => <post_type>, 'posts_per_page' => -1, 'post_status' => 'publish', 'orderby' => 'date', 'order' => 'DESC' ));
echo '<ul>';
while ( $loop->have_posts() ) : $loop->the_post(); 
$end = get_post_meta($post->ID, 'end', true); 
$start = get_post_meta($post->ID, 'start', true);
$c++;
$y = strtotime($end); 
$x = strtotime($start);

//echo '<br />';
if ($y < $x) { next; } else {
?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php } 
echo '</ul>';
endwhile;

if ($c == 0) { 
echo '<p>None found.</p>';
}

}
?>

0
投票

我在使用普通 PHP 编写代码后就可以正常工作了。我确信 WP 功能可以替代其中的一些功能。但它有效,这就是我所需要的。关于 Lastlist 的 if 语句确保它不会列出重复项,因为在编辑帖子时,这些自定义字段会一次又一次地添加。然而,此查询仅获取每个列表的最新信息。

我的代码:

  <?php
$lastlist = "";
$masterquery = "SELECT * from wp_postmeta WHERE meta_key = 'open_date' ORDER BY meta_value";
$masterreslt = mysql_query($masterquery) or die(mysql_error());
while($masterdata = mysql_fetch_array($masterreslt)) {
    $new_array = $masterdata['meta_value'];
    if(!empty($masterdata['meta_value'])) {
        foreach($masterdata as $fullarray) {
            $post_id = $masterdata['post_id'];

            $property_id = $post_id;

                if($property_id != $lastlist){

                $address = get_post_meta($property_id, 'address', true);

                $open_date = get_post_meta($property_id, 'open_date', true);
                $open_date = date(  "F j, Y", strtotime( $open_date ) );  
                $open_start = get_post_meta($property_id, 'open_start', true);
                $open_close = get_post_meta($property_id, 'open_close', true);
                $image = get_post_meta($property_id, 'red_image1', true);
                $excerpt = get_post($property_id, ARRAY_N);
                $excerpt = $excerpt['5'];
                $permalink = get_permalink( $property_id );

                echo "<div style=\"width:800px;\">";
                echo "<a href=\"$permalink\"><img style=\"width:250px; height:180px; float:left; margin:10px;\" src=\"$image\" /></a>";
                echo "<span style=\"float:right;width:530px;\"><a href=\"$permalink\"><h1>$address</h1></a></span>";
                echo "<span style=\"float:right;width:530px;\"><h2>$open_date $open_start to $open_close</h2></span>";
                echo "<span style=\"float:right;width:530px;\"><p>$excerpt</p></span>";
                echo "</div>";
                echo "<div style=\"clear:both;\">";
                $lastlist = $property_id;
        }
        }
© www.soinside.com 2019 - 2024. All rights reserved.