Список содержимого публикации с использованием мета-сообщения - PullRequest
0 голосов
/ 04 июля 2011

У меня есть пользовательская страница php для клиента. По сути, эта страница будет перечислять сообщения на дату post_meta (называется open_date). Также для каждого элемента с установленным open_date включены еще 2 (open_start) и (open_close). Если вы еще не поняли, это для списка типов событий.

В конечном итоге мне нужен скрипт для получения всех сообщений с этой мета и их отображения по порядку. Примеры каждого значения метас ниже. Не совсем уверен, с чего начать сценарии, так что моего фрагмента довольно не хватает ..

например,-х open_date = 12/05/2011 open_start = 12:10 вечера open_close = 14:00

и мой сценарий до сих пор

$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.

Ответы [ 2 ]

0 голосов
/ 05 июля 2011

У меня это работает после написания кода с использованием обычного PHP. Я уверен, что есть функции WP, которые могут заменить некоторые из них. Но это работает, и это все, что мне нужно. Оператор if для lastlist гарантирует, что в нем не будет дубликатов, так как при редактировании сообщений эти настраиваемые поля добавляются снова и снова. Этот запрос, однако, получает только последние из каждого списка.

мой код:

  <?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 голосов
/ 04 июля 2011

Если я вас правильно понимаю, вы хотите показывать сообщения между двумя датами (начало и конец) Прежде всего вам нужно добавить настраиваемое поле (или метабокс), в которое вы вводите две даты, одну для начала и одну для финского.

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

}
?>
...