У меня есть следующая часть кода:
private function get_shortcodes() {
$shortcodes = array();
$shortcodes += array_fill_keys( array( 'WPBUSDIRMANADDLISTING',
'businessdirectory-submitlisting' ),
array( &$this->controller, 'submit_listing' ) );
$shortcodes += array_fill_keys( array( 'WPBUSDIRMANMANAGELISTING',
'businessdirectory-managelistings',
'businessdirectory-manage_listings' ),
array( &$this->controller, 'manage_listings' ) );
$shortcodes += array_fill_keys( array( 'WPBUSDIRMANVIEWLISTINGS',
'WPBUSDIRMANMVIEWLISTINGS',
'businessdirectory-view_listings',
'businessdirectory-viewlistings',
'businessdirectory-listings' ),
array( &$this, '_listings_shortcode' ) );$shortcodes += array_fill_keys( array( 'WPBUSDIRMANUI',
'businessdirectory',
'business-directory' ),
array( &$this->controller, 'dispatch' ) );
$shortcodes += array_fill_keys( array( 'businessdirectory-search',
'businessdirectory_search' ),
array( &$this->controller, 'search' ) );
$shortcodes['businessdirectory-featuredlistings'] = array( &$this, '_featured_listings_shortcode' );
return apply_filters( 'wpbdp_shortcodes', $shortcodes );
}
Где часть …
$shortcodes += array_fill_keys( array( 'WPBUSDIRMANVIEWLISTINGS',
'WPBUSDIRMANMVIEWLISTINGS',
'businessdirectory-view_listings',
'businessdirectory-viewlistings',
'businessdirectory-listings' ),
array( &$this, '_listings_shortcode' ) );
…должен отображать некоторые списки каталогов на моем сайте.
Оно работает. Но он получает 10 списков в соответствии с настройками плагина. Мне нужно, чтобы получить только 2. Другими словами, мне нужно ограничить его.
Я пытался использовать array_slice
а также array_splice array_unique
чтобы получить только несколько значений, но это не сработало.
Что я делаю неправильно?
Например, я попытался использовать это так:
array_slice( ( &$this, '_listings_shortcode' ),0,2)
Не могу сделать.
РЕДАКТИРОВАТЬ
Все еще пытаюсь…
if (!in_array('WPBUSDIRMANMVIEWLISTINGS', $shortcodes)){
if(count($shortcodes)>=2)
array_shift($shortcodes);
$shortcodes[] = 'WPBUSDIRMANMVIEWLISTINGS';
}
РЕДАКТИРОВАТЬ 2
Что ж, по логике руководства php это правильно, но все равно не работает, не получая ошибок, хотя я попробовал эти два метода:
это
if (!in_array('_listings_shortcode', $shortcodes)){
if(count($shortcodes)>=1)
array_shift($shortcodes);
$shortcodes[] = ('_listings_shortcode');
}
И это
if (!in_array('_listings_shortcode', $shortcodes)){
$count = count($shortcodes);
if($count>=1)
array_shift($shortcodes);
$shortcodes[] = ('_listings_shortcode');
}
Вы можете сделать это, получив длину массива и, если длина меньше или равна желаемой сумме, и добавьте элемент в конец массива.
Вот простой пример, чтобы сделать это, я не знаю, если это то, что вы хотите … 🙂
if (!in_array($ExpectedArray, $yourArray)){
if(count($yourArray)>=2)
array_shift($yourArray);
$yourArray[] = $ExpectedArray;
}
Для дополнительной информации :
$ExpectedArray
не является массив, это значение, которое вы ожидаете $yourArray
пожалуйста, проверьте этот о примере in_array.
Других решений пока нет …