如何在 wordpress 中创建自定义 realted post?

how to create a custom realted post in wordpress?

在我的 WordPress 网站中,我想向我的博客读者推荐一个特定的 post。 建议的位置在另一个 post 段落之间。 例如,我在短代码中输入了目的地的 ID post。 结果将是 post 的标题及其缩略图,以便用户可以单击它并查看 post。

我得到了这段代码,但它不起作用。它也没有 post 缩略图:

// Add Shortcode
function post_link_shortcode( $atts ) {

// Attributes
$atts = shortcode_atts(
    array(
        'id' => '',
    ),
    $atts,
    'link-to-post'
);

// Return only if has ID attribute
if ( isset( $atts['id'] ) ) {
    return '<a href="' . get_permalink( $atts['id'] ) . '">' . get_the_title( $atts['id'] ) . '</a>';
}

}
  add_shortcode( 'link-to-post', 'post_link_shortcode' );

如果您的短代码有效,您可以使用类似这样的方式获取 post 的 img。

// Add Shortcode
add_shortcode('link-to-post', 'post_link_shortcode');
function post_link_shortcode($atts)
{
    // Attributes
    $atts = shortcode_atts(array(
        'id' => '',
    ), $atts);

    // Return only if has ID attribute
    if (isset($atts['id'])) {
        $post = get_post($atts['id']);
        ob_start(); ?>
        <div class="featured-post">
            <a href="<?= get_permalink($post); ?>">
                <img src="<?= wp_get_attachment_image_src(get_post_thumbnail_id($post), 'single-post-thumbnail')[0]; ?>" alt="featured image">
            </a>
            <a href="<?= get_permalink($post); ?>"><?= $post->post_title ?></a>
        </div>
<?php
        return ob_get_clean();
    } else {
        return 'No post with that ID found';
    }
}

你可以这样做,也可以用一个 link

包裹所有
<a href="URL"> <!-- CSS display:block will help you -->
  img
  title
</a>

对于特色图片,您可以使用 the_post_thumbnail_url();

// Add Shortcode
add_shortcode('link-to-post', 'post_link_shortcode');
function post_link_shortcode($atts)
{
    // Attributes
    $atts = shortcode_atts(array(
        'id' => '',
    ), $atts);

    // Return only if has ID attribute
    if (isset($atts['id'])) {
        $post = get_post($atts['id']);
        ob_start(); ?>
        <div class="featured-post">
            <a href="<?php get_permalink($post); ?>">
                <img src="the_post_thumbnail_url()" alt="featured image">
            </a>
            <a href="<?php get_permalink($post); ?>"><?php $post->post_title ?></a>
        </div>
<?php
        return ob_get_clean();
    } else {
        return 'No post with that ID found';
    }
}