2012-06-07 4 views
1

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

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

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

Сейчас я использую этот код:

<?php 
$productos = new WP_Query(array(
'post__in'=> array(81, 83), 
'orderby'=>'title', 
'order'=>'ASC' 
) 
); if ($productos->have_posts()) : while ($productos->have_posts()) : $productos->the_post(); 
?> 

Это отображение сообщения с идентификатором 81 и 83, я хотел бы показать сообщение от пули с помощью «имени», как говорит Codex потому что потребуется некоторое время, чтобы проверять идентификаторы нового сообщения, вместо того, чтобы использовать имя каждого нового продукта, но оно не работает в массиве, или я делаю что-то неправильно.

Теперь я буду любить, чтобы сделать что-то вроде этой работы

$names = get_post_meta($post->ID, "names", $single = true); 

$productos = new WP_Query(array(
'name'=> array($names), 
'orderby'=>'title', 
'order'=>'ASC' 
) 
); 

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

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

Update:

Так что я теперь, глядя, если я могу сделать это с помощью шорткоды, прямо сейчас у меня есть это:

function producto_func($atts) { 
    extract(shortcode_atts(array(
     'nombre' => '' 
    ), $atts)); 
    global $post; 
    $pieza = get_page_by_title($nombre,OBJECT, 'post'); 
       echo '<h1>'. $pieza->ID . '</h1>'; 
} 
add_shortcode('producto', 'producto_func'); 
enter code here 

Так что я просто введите шорткод [producto nombre="ff 244"] на странице и он показывает свой идентификатор, и я могу добавить любое количество коротких кодов в зависимости от количества сообщений, которые мне нужны. Но как я могу показать весь контент сообщения.

Любая идея?

ответ

1

Я нахожу решение I с использованием коротких кодов. Так я это на моей странице functions.php

function productos($atts, $content = null) { 
    extract(shortcode_atts(array(
     "slug" => '', 
     "query" => '' 
    ), $atts)); 
    global $wp_query,$post; 
    $temp = $wp_query; 
    $wp_query= null; 
    $wp_query = new WP_Query(array( 
    'name'=> $slug, 
    )); 
    if(!empty($slug)){ 
     $query .= '&name='.$slug; 
    } 
    if(!empty($query)){ 
     $query .= $query; 
    } 
    $wp_query->query($query); 
    ob_start(); 
    ?> 
    <?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?> 
     <h1><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h1> 
     <div><?php the_content() ?></div> 
    <?php endwhile; ?> 

    <?php $wp_query = null; $wp_query = $temp; 
    $content = ob_get_contents(); 
    ob_end_clean(); 
    return $content; 
} 
add_shortcode("producto", "productos"); 

И в моем шаблоне страницы я просто пишу [Producto слизняка = «MY-Slug»] и таким образом я могу отобразить несколько пост только с улитками. Надеюсь, кто-то найдет это полезным.

1

От Wordpress Codex: пост

Показать по Slug:

$ запрос = новый WP_Query ('имя = о-моей жизни');

Дисплей страница по Slug:

$ запрос = новый WP_Query ('Pagename = контакт');

UPDATE

Попробуйте это изменить:

'name'=> array($names), 

Для этого:

'name'=> $names, 

'Имя' - и 'ИмяСтраницы' - параметр не принимает в массив. Только строка. Список с разделителями-запятыми ДОЛЖЕН предоставить вам то, что вам нужно, из ваших пользовательских полей под названием «имена», хотя я не тестировал этот подход.

Кроме того, спасибо за использование WP_Query вместо query_posts.

+0

, но я хочу показывать сообщения на странице без другой страницы, поэтому я использую '' name'', и мне нужен массив для отображения нескольких сообщений. –

+0

Я неправильно понял эту часть: «Я использую страницы, потому что я не хочу повторно размещать продукт в каждом новом информационном бюллетене, поэтому я хочу показать сообщения на странице». Если вы используете страницы в качестве оболочки для определенных сообщений, просмотрите мое обновление. – maiorano84

+0

Благодарим за помощь. Просто попробую, но принимаю только одно значение, если я поместил еще один пул в свое настраиваемое поле, разделенное запятой. Это то, что вы имеете в виду, говоря «Список с разделителями-запятыми ...» Я нахожу решение с использованием коротких кодов, которые я собираюсь разместить ниже –