Functions.php中的上次更新帖子快捷代码

时间:2020-07-04 作者:FeliceAntonio

我正在搜索在函数中创建一个短代码。php子主题,用缩略图显示上次更新的帖子。我有以下代码可用于页面模板:

    <ol class="list-numbered">
    <?php
    // Show recently modified posts
    $recently_updated_posts = new WP_Query( array(
        \'post_type\'      => \'post\',
        \'posts_per_page\' => \'13\',
        \'orderby\'        => \'modified\',
        \'no_found_rows\'  => \'true\' // speed up query when we don\'t need pagination
    ) );
    if ( $recently_updated_posts->have_posts() ) :
        while( $recently_updated_posts->have_posts() ) : $recently_updated_posts->the_post(); ?>
            <li><a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?>
<?php
$size = \'thumbnail\'; 
 $attachments = get_children( array(
        \'post_parent\' => get_the_ID(),
        \'post_status\' => \'inherit\',
        \'post_type\' => \'attachment\',
        \'post_mime_type\' => \'image\',
        \'order\' => \'ASC\',
        \'orderby\' => \'menu_order ID\',
        \'numberposts\' => 1)
    );
    foreach ( $attachments as $thumb_id => $attachment ) {
        echo wp_get_attachment_image($thumb_id, $size);
    }
?>
</a></li>
        <?php endwhile; ?>
        <?php wp_reset_postdata(); ?>
    <?php endif; ?>
</ol>
但我会在函数中插入。php文件,并调用短代码。你有什么想法吗?提前谢谢。

2 个回复
最合适的回答,由SO网友:Sabbir Hasan 整理而成

你可以像贝娄那样做

// register shortcode
add_shortcode(\'last-modified\', \'last_mofied_shortcode_callback\'); 

function last_mofied_shortcode_callback() { 
    $output = \'<ol class="list-numbered">\';

    $recently_updated_posts = new WP_Query( array(
        \'post_type\'      => \'post\',
        \'posts_per_page\' => \'13\',
        \'orderby\'        => \'modified\',
        \'no_found_rows\'  => \'true\' // speed up query when we don\'t need pagination
    ) );
    if ( $recently_updated_posts->have_posts() ) :
        while( $recently_updated_posts->have_posts() ) : $recently_updated_posts->the_post();
            $output .= \'<li><a href="\'.get_the_permalink().\'" rel="bookmark" title="\'.get_the_title().\'">\'.get_the_title();

            $size = \'thumbnail\'; 
            $attachments = get_children( array(
                    \'post_parent\' => get_the_ID(),
                    \'post_status\' => \'inherit\',
                    \'post_type\' => \'attachment\',
                    \'post_mime_type\' => \'image\',
                    \'order\' => \'ASC\',
                    \'orderby\' => \'menu_order ID\',
                    \'numberposts\' => 1));
            foreach ( $attachments as $thumb_id => $attachment ) {
                $output .= wp_get_attachment_image($thumb_id, $size);
            }

            $output .= \'</a></li>\';
        endwhile;
        wp_reset_postdata();
    endif;
    return $output;
}
现在你可以使用[last-modified] 在内容中的任意位置进行快捷编码。如果您想在php文件中使用,那么只需像这样使用它echo do_shortcode(\'[last-modified]\');

了解更多信息add_shortcode() here

SO网友:FeliceAntonio

此代码运行良好。我在$recently\\u updated\\u posts中添加了category\\u name,以显示每个类别的最近更新的帖子,它也很有效。当我尝试添加get\\u category\\u link()和get\\u时,\\u category()返回;“数组”;而是类别链接和类别名称。我错在哪里?提前谢谢。

相关推荐

Shortcode called twice

我正在使用一个快捷代码处理我的产品信息,它可以自动生成一个包含信息的表。但这个短代码似乎被调用了两次。我不是一个优秀的后端开发人员,但我正在努力学习一些基础知识,以便能够制作一些基本的PHP函数。我非常感谢你的帮助。提前谢谢。我的代码如下所示:function displayTable() { echo \'<table>\'; echo \'<tbody>\'; $fields = get_field_objects();&