PHP цикл Foreach для отображения описания только этого поста - PullRequest
0 голосов
/ 14 января 2012

Я использую WordPress и хочу, чтобы на каждой странице я видел разные заголовки и описания из своего настраиваемого поля:

1 страница (идентификатор 1), описание

2 страницы (идентификатор 2) заголовок, описание

и т. Д.

Я пробовал этот фрагмент кода с различными вариантами (теперь он показывает толькоid), но все, чего я достиг, это то, что он просто поместил бы все заголовки и описания на каждой странице.

$titles = array();
$result = mysql_query("SELECT * FROM wp_postmeta WHERE meta_key='_aioseop_title' OR meta_key='_aioseop_description'" );

while($row = mysql_fetch_array($result))
{
    $titles[] = $row['meta_value'];
    $ids[] = $row['post_id'];
}
?>
<?php 
if ($post_id = the_id()) 
{
    foreach ($titles as $meta_key=>$meta_value)
    {
        print $post_id;
        print '<div class="white">' . $meta_value . '</div>';
        print '<div class="green">' . $meta_value . '</div>';
    };
}
?>

Любая идея или ссылка на учебник или подсказку были бы очень полезны.

Ответы [ 3 ]

0 голосов
/ 14 января 2012

Сначала вы должны получить только заголовок и описание этого конкретного поста.Это можно сделать, убедившись, что поле post_id равно get_the_ID():

$result = mysql_query("SELECT * FROM wp_postmeta WHERE (meta_key='_aioseop_title' OR meta_key='_aioseop_description') AND `post_id` = '".get_the_ID()."';");

Затем вы можете прочитать результаты в переменные;

while ($row = mysql_fetch_array($result)) {
  $meta_data[$row["meta_key"]] = $row["meta_value"];
}

Теперь $meta_data["_aioseop_title"] должно содержатьназвание и $meta_data["_aioseop_description"] должны содержать описание.

0 голосов
/ 15 января 2012

Хорошо, с помощью Патрикдева мне удалось это сделать :) Хотя почему-то, когда я писал цикл foreach, все, что он делал, отображал заголовок и описание дважды (для каждого элемента в массиве meta_data), поэтому, когда я удалял foreach и просто использовалэлементы из этого массива, он начал работать как следует:)

Вот код, если кому-то это нужно:

<?php           

                                    $result = mysql_query("SELECT * FROM wp_postmeta WHERE (meta_key='_aioseop_title' OR meta_key='_aioseop_description') AND `post_id` = '".get_the_ID()."' ORDER BY meta_id DESC;");

                                    while ($row = mysql_fetch_array($result)) 
                                        {
                                            $meta_data[$row["meta_key"]] = $row["meta_value"];
                                        }
                                            print '<div class="white">' . $meta_data["_aioseop_title"] . '</div>';
                                            print '<div class="green">' . $meta_data["_aioseop_description"] . '</div>';
                                ?> 

Еще раз спасибо, Патрикдев.

0 голосов
/ 14 января 2012

Ваш запрос получает все метаданные поста - ограничьте его post_id = the_id ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...