Помогите по PHP, что не так?

Robick
На сайте с 17.08.2007
Offline
173
577

если

'post__in' => array(991, 992, 993), 

ставлю, то отображает все 3 поста

если

 'post__in' => array($post), 
то только первый заданный пост 991, а нужно все 991, 992, 993

шорткод задается так

array(

"type" => "textfield",
"holder" => "div",
"class" => "",
"heading" => __("Номера записей портфолио через запятую", 'archi' ),
"param_name" => "post",
"value" => "",
"description" => __("Введите номера записей портфолио через запятую.", 'archi' )
),

Допомгитэ, пожялуйсто! :)

G2
На сайте с 27.10.2009
Offline
62
#1

покажите результат

var_export($post); die;


---------- Добавлено 27.11.2015 в 17:19 ----------

скорей всего вам надо сделать explode поста
КакМаршрутник (http://goo.gl/forms/hMgaH0s9E5) — как маршрутник, но работает.
eis
На сайте с 18.10.2008
Offline
473
eis
#2

Robick, весь код покажите ☝

- Здесь я покупаю вечные ссылки на свои сайты! (https://backlinkator.com) - сотни ссылок за копейки
Robick
На сайте с 17.08.2007
Offline
173
#3

Вот 2 полных куска, в первом задается вывод, во втором задается шорткод

// Portfolio Filter


add_shortcode('folioc', 'folioc_func');
function folioc_func($atts, $content = null){
extract(shortcode_atts(array(
'all' => '',
'num' => '',
'post' => '',
), $atts));

$all1 = (!empty($all) ? $all : 'ALL PROJECTS');
$num1 = (!empty($num) ? $num : 8);
$post1 = (!empty($post) ? $post : 0);

ob_start(); ?>
<div class="container">
<!-- portfolio filter begin -->
<div class="row">
<div class="col-md-12 text-center">
<ul id="filters" class="wow fadeInUp" data-wow-delay="0s">
<li><a href="#" data-filter="*" class="selected"><?php echo htmlspecialchars_decode($all1); ?></a></li>

<?php

$categories = get_terms('categories');

foreach( (array)$categories as $categorie){

$cat_name = $categorie->name;

$cat_slug = $categorie->slug;

$cat_count = $categorie->count;

?>
<li><a href="#" data-filter=".<?php echo htmlspecialchars_decode( $cat_slug ); ?>"><?php echo htmlspecialchars_decode( $cat_name ); ?></a></li>
<?php } ?>

</ul>

</div>
</div>
<!-- portfolio filter close -->
</div>

<div id="gallery" class="gallery full-gallery de-gallery pf_full_width wow fadeInUp" data-wow-delay=".3s">
<?php

$args = array(

'post_type' => 'portfolio',

'posts_per_page' => $num1,

'post__in' => array($post),

);

$wp_query = new WP_Query($args);

while ($wp_query -> have_posts()) : $wp_query -> the_post();

$cates = get_the_terms(get_the_ID(),'categories');

$cate_name ='';

$cate_slug = '';

foreach((array)$cates as $cate){

if(count($cates)>0){

$cate_name .= $cate->name.'<span>, </span> ' ;

$cate_slug .= $cate->slug .' ';

}

}

?>
<!-- gallery item -->
<div class="item <?php echo esc_attr($cate_slug); ?>">
<div class="picframe">
<a class="simple-ajax-popup-align-top" href="<?php the_permalink(); ?>">
<span class="overlay">
<span class="pf_text">
<span class="project-name"><?php the_title(); ?></span>
</span>
</span>
</a>
<?php $image = bfi_thumb( wp_get_attachment_url(get_post_thumbnail_id())); ?>
<img src="<?php echo esc_url($image);?>" alt="">
</div>
</div>
<!-- close gallery item -->
<?php endwhile; wp_reset_postdata(); ?>
</div>

<?php

return ob_get_clean();
}

//Portfolio Custom

if(function_exists('vc_map')){
vc_map( array(
"name" => __("OT Портфолио по ID", 'archi'),
"base" => "folioc",
"class" => "",
"icon" => "icon-st",
"category" => 'Content',
"params" => array(

array(
"type" => "textfield",
"holder" => "div",
"class" => "",
"heading" => __("Text Show All Portfolio", 'archi'),
"param_name"=> "all",
"value" => "",
"description" => __("Text Filter Show All Portfolio.", 'archi')
),
array(
"type" => "textfield",
"holder" => "div",
"class" => "",
"heading" => __("Number portfolio per page", 'archi' ),
"param_name" => "num",
"value" => "10",
"description" => __("Enter Number Portfolio.", 'archi' )
),
array(
"type" => "textfield",
"holder" => "div",
"class" => "",
"heading" => __("Номера записей портфолио через запятую", 'archi' ),
"param_name" => "post",
"value" => "",
"description" => __("Введите номера записей портфолио через запятую.", 'archi' )
),

)));
}
Gerga
На сайте с 02.08.2015
Offline
94
#4

Robick, а $post это массив? Если нет, то:


$post = explode(',', $post);
// и тогда уже
'post__in' => $post,
Robick
На сайте с 17.08.2007
Offline
173
#5
Gerga:
Robick, а $post это массив? Если нет, то

В терминологии не силен, но post - это произвольное название, которое я задал. :)

---------- Добавлено 27.11.2015 в 18:33 ----------

Задача в том, что бы в

array(

"type" => "textfield",
"holder" => "div",
"class" => "",
"heading" => __("Номера записей портфолио через запятую", 'archi' ),
"param_name" => "post",
"value" => "",
"description" => __("Введите номера записей портфолио через запятую.", 'archi' )
),


"post", передавал

сюда
 'post__in' => array($post),


Все ади через запятую - 1, 2, 3...

Сейчас же он передает только первое айди в списке 1

При этом, если вручную прописать сюда
 'post__in' => array(1, 2, 3... ),

то все прекрасно выводится.
Gerga
На сайте с 02.08.2015
Offline
94
#6

Robick, я отталкивался от вашего примера. Чтобы получить определенные записи с помощью


'post__in'

нужно передать массив с ID.

Robick:
array(991, 992, 993)

этот массив имеет такой вид

Array ( [0] => 991 [1] => 992 [2] => 993 )
Robick:
'post__in' => array($post),

Этот же такой:

Array ( [0] => 991, 992, 993 )

Один элемент, который содержит строку (string)


---------- Добавлено 27.11.2015 в 15:36 ----------

надеюсь разница очевидна

Превратите $post в нужный массив, с помощью explode, и будет вам счастье.

Robick
На сайте с 17.08.2007
Offline
173
#7
Gerga:
Превратите $post в нужный массив, с помощью explode, и будет вам счастье.

Извините, я совсем деревянный тут, если не сложно, можете дать кусок кода, который нужно заменить? :)

Gerga
На сайте с 02.08.2015
Offline
94
#8
Robick:
$args = array(

'post_type' => 'portfolio',

'posts_per_page' => $num1,

'post__in' => array($post),

);

должно стать так:


$post = array_map ( 'trim', explode(',', $post) );
$args = array (
'post_type' => 'portfolio',
'posts_per_page' => $num1,
'post__in' => $post,
);
Robick
На сайте с 17.08.2007
Offline
173
#9

Gerga, дайте же я вас расцелую!!! 🍻

Огромное спасибо и респектос☝ К сожаленю клацнуть не дает, пишет, что уже и нужно ждать.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий