侧边栏的自定义查询未返回结果

时间:2020-04-17 作者:Christina

我正在尝试创建一个快捷码,它基于Yoast的主要类别元键运行自定义查询。

目标是使用与所显示的帖子相同的元键值来拉帖子,并在侧边栏中显示4个以上的帖子。

到目前为止,一切正常,但查询没有得到具有相同值的帖子。

我添加了一个元键值的回声,以确保它得到了它,而且它确实得到了。

这是我的代码:

function primary_category_query_shortcode( $atts ) {
    $atts = shortcode_atts( $defaults, $atts, \'primary_category_query\' );

    $my_meta = get_post_meta ( $id, \'_yoast_wpseo_primary_category\', true);

// WP_Query arguments
$args = array (
    \'posts_per_page\'         => \'4\',
    \'meta_query\'             => array(
        array(
            \'key\'       => \'_yoast_wpseo_primary_category\',
            \'value\'     => \'$my_meta\',
        ),
    ),
);

    echo get_post_meta( get_the_ID(), \'_yoast_wpseo_primary_category\', true);  

// The Query
$query = new WP_Query( $args );

// The Loop
if ( $query->have_posts() ) { ?>

    <section class="recent-posts clear">

    <?php while ( $query->have_posts() ) : $query->the_post() ; ?>

    <article id="post-<?php the_ID(); ?>" <?php post_class( \'left\' ); ?>>

    <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
        <?php the_title(); ?>
    </a>

    </article>

    <?php endwhile; ?>

    </section>

    <?php } else {
        echo \'Sorry, no more found.\';
    }

    /* Restore original Post Data */
    wp_reset_postdata();
}
?>```

1 个回复
最合适的回答,由SO网友:Tony Djukic 整理而成

根据我们在评论中的聊天,以下是我的看法。请告知是否有效。

<?php
function primary_category_query_shortcode( $post, $atts ) {
    //global $post;  //Uncomment this global if it still doesn\'t work.
    $atts = shortcode_atts( $defaults, $atts, \'primary_category_query\' );
    $my_meta = get_post_meta ( $post->ID, \'_yoast_wpseo_primary_category\', true );
    // WP_Query arguments
    $args = array (
        \'posts_per_page\'         => \'4\',
        \'meta_query\'             => array(
            array(
                \'key\'       => \'_yoast_wpseo_primary_category\',
                \'value\'     => $my_meta
            ),
        ),
    );
    // All this would do is echo the ID of the category, correct?  Just for testing?
    //echo get_post_meta( get_the_ID(), \'_yoast_wpseo_primary_category\', true);  
    // The Query
    $query = new WP_Query( $args );
    // The Loop
    if ( $query->have_posts() ) { ?>
        <section class="recent-posts clear">
        <?php while ( $query->have_posts() ) : $query->the_post() ; ?>
            <article id="post-<?php the_ID(); ?>" <?php post_class( \'left\' ); ?>>
                <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
                    <?php the_title(); ?>
                </a>
            </article>
        <?php endwhile; ?>
        </section>
    <?php } else {
        echo \'Sorry, no more found.\';
    }
    /* Restore original Post Data */
    wp_reset_postdata();
}
?>
一种解释,我怀疑可能发生的是,您尝试获取Yoast主类别没有成功,因为根据您的var\\u dump(),您没有获取帖子ID,它返回为NULL. 因此,我们将在function() 如果仍然不起作用,我们将使用global $post; 以确保它被引用(这将是第二行,如果没有它就无法工作,只需取消注释即可。)

我还注释掉了echo get_post_meta( get_the_ID(), \'_yoast_wpseo_primary_category\', true ); 因为从理论上讲,这只会呼应出类别的ID号。所以我想你把它放在那里测试。

相关推荐

如何使用jQuery在默认情况下启用Read More

我有一个question and answer 并使用自定义wordpress主题,该主题具有启用read more 使用jquery链接。当我点击阅读更多链接时,它会扩展文章的全部内容,而不会打开文章。我想知道是否有可能在默认情况下扩展帖子,而无需单击红色更多链接。你能帮我做到这一点吗。