根据我们在评论中的聊天,以下是我的看法。请告知是否有效。
<?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号。所以我想你把它放在那里测试。