Я не очень знаком с PHP, но я учусь. Я использую Wordpress и хочу создать фильтруемую страницу «обновлений новостей», представляющую собой список архивов сообщений из «последних 15 сообщений».
У меня есть 4 категории:
- Новое пособие
- Полезно
- Срочно и важно
- Для вас
Когда я создаю сообщение, назначенное этой конкретной категории, я хочу элемент списка, которому будет присвоен класс категории.
В результате я хочу, чтобы моя страница была
![](https://i.stack.imgur.com/iItUg.jpg)
Со следующим CSS:
.category-useful:before {
float: right;
position: inherit;
color: white;
font-family: "Font Awesome 5 Pro";
font-weight: 900;
content: "\f129";
zoom: 3;
padding: 5px 10px 5px 20px;
}
.category-urgent_important, .category-urgent_important h2 {
color: white;
background-color: red;
}
.category-urgent_important:before {
float: right;
position: inherit;
color: white;
font-family: "Font Awesome 5 Pro";
font-weight: 900;
content: "\f071";
zoom: 3;
padding: 5px 5px 5px 20px;
}
.category-for_you, .category-for_you h2 {
color: white;
background-color: green;
}
.category-for_you:before {
float: right;
position: inherit;
color: white;
font-family: "Font Awesome 5 Pro";
font-weight: 900;
content: "\f02d";
zoom: 3;
padding: 5px 5px 5px 20px;
}
.category-uncategorised {
display: none;
}
Вот моя текущая разметка:
function category_ac(){
$categories = get_the_category();
foreach ( $categories as $category ) {
echo esc_html( $category->cat_name );
}
}
$how_many_last_posts = intval(get_post_meta($post->ID, 'archived-posts-no', true));
if($how_many_last_posts > 200 || $how_many_last_posts < 2) $how_many_last_posts = 15;
$my_query = new WP_Query('post_type=post&nopaging=1');
if($my_query->have_posts()) {
echo '<h1 class="widget-title">Last '.$how_many_last_posts.' Posts <i class="fa fa-bullhorn" style="vertical-align: baseline;"></i></h1> ';
echo '<div class="archives-latest-section"><ol>';
$counter = 1;
while($my_query->have_posts() && $counter <= $how_many_last_posts) {
$my_query->the_post();
?>
<li class="<?php echo 'category-'.category_ac() ?>"><a href="<?php the_permalink() ?>" rel="category tag" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title();?></a></li>
<?php
$counter++;
}
echo '</ol></div>';
wp_reset_postdata();
}
Беда в том, что она работает, но вот так:
<div class="archives-latest-section"><ol> <li class="Uncategorized"><a href="https://www.website.com/2019/10/07/test-5/" rel="category tag" title="Permanent Link to Test 5">Test 5</a></li>
<li class="New Benefitcategory-"><a href="https://www.website.com/2019/10/07/test-4/" rel="category tag" title="Permanent Link to Test 4">Test 4</a></li>
<li class="Usefulcategory-"><a href="https://www.website.com/2019/10/07/test-3/" rel="category tag" title="Permanent Link to Test 3">Test 3</a></li>
<li class="Urgent & Importantcategory-"><a href="https://www.website.com/2019/10/07/test-2/" rel="category tag" title="Permanent Link to Test 2">Test 2</a></li>
<li class="For Youcategory-"><a href="https://www.website.com/2019/10/07/test-1/" rel="category tag" title="Permanent Link to Test 1">Test 1</a></li>
</ol></div>
Как можно Я манипулирую выводом 'category_a c ();' и убрать все пробелы и заглавные буквы, когда вы вставляете «category-» впереди?
Я нашел эту тему:
Strip php переменная, замените пробелы на тире
Хотя это подразумевает, что 'category_a c ()' должна быть переменной, которую нужно изменить.
Я не могу применить свою собственную переменную, такую как:
$test = category_ac();
... Поскольку это ничего не делало, поэтому я предполагаю, что я делаю это неправильно.