Я только что переключился на новую тему и не хочу переопределять файлы шаблонов. В моей старой теме у меня был собственный файл sidebar.php со следующим кодом над частью динамического виджета. Для новой темы я хочу сделать это с помощью шорткода и просто использовать текстовый виджет, чтобы разместить его на боковой панели. Как я могу преобразовать это в шорткод?
<aside id = "my-listings" class = "widget widget-my-listings">
<h2 class = "widget-title">Featured Listings</h2>
<ul>
<?php
global $post;
$listings = get_posts('category=3&numberposts=-1&orderby=meta_value&meta_key=price&order=DESC');
foreach($listings as $post) :
?>
<li><a href = "<?php the_permalink(); ?>"><?php
if (get_post_meta($post->ID, "alternate_title", true)) {
echo get_post_meta($post->ID, "alternate_title", true);
} else {
the_title();
} ?></a></li>
<?php endforeach; ?>
</ul>
</aside>
Используйте этот шорткод.
[mylistingswidget]
Это место кода в вашем functions.php
<?php
add_shortcode( 'mylistingswidget', 'my_listings_widget' );
function my_listings_widget( $atts ) {
ob_start();
?>
<aside id = "my-listings" class = "widget widget-my-listings">
<h2 class = "widget-title">Featured Listings</h2>
<ul>
<?php
global $post;
$listings = get_posts('category=3&numberposts=-1&orderby=meta_value&meta_key=price&order=DESC');
foreach($listings as $post) :
?>
<li><a href = "<?php the_permalink(); ?>"><?php
if (get_post_meta($post->ID, "alternate_title", true)) {
echo get_post_meta($post->ID, "alternate_title", true);
} else {
the_title();
} ?></a></li>
<?php endforeach; ?>
</ul>
</aside>
<?php
return ob_get_clean();
}
Это работает как шарм. Абсолютно идеально. Спасибо!!!