开发者

List post content using post meta

I have a custom php page for a client. Essentially this page will list out posts by a post_meta date (called open_date). Also included for each item with open_date set is 2 more (open_start) and (open_close). If you havn't figured it out, this is for an event type listing.

Ultimately what I'm after is a script to get all posts with this meta and display them in order. Examples of each metas value below. Not really sure where to start scripting, so my snippet is rather lacking..

e.g.'s open_date = 12/05/2011 open_start = 12:10 pm open_close = 02:00 pm

and my script s开发者_StackOverflowo far

$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>';
        }

As I said, rather lacking and not too sure where to start. Never done anything like this in WP before.


If i understand you correctly you want to show posts between two dates (start and end) First off you need to add a custom field (or metabox) where you input two dates, one for start and one for finnish.

<?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>';
}

}
?>


I've got this working after writing the code using normal PHP. I'm sure there's WP functions that could replace some of this. But it works, which is all I need. The if statement about lastlist makes sure it doesn't list duplicates, as when editing posts these custom fields get added again and again. This query however gets only the latest of each listing.

my code:

  <?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;
        }
        }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜