我的目标是将另一个设备附加到任何现有的permalink上,以便您可以将一个设备与另一个设备进行比较,反之亦然。这是完全动态/自动的;i、 例如,不需要手动输入和CRON作业等。
让我们假装你有:
https://example.com/mobile-device-a/
我们想添加对的支持:
https://example.com/mobile-device-a/compare/mobile-device-b/
https://example.com/mobile-device-b/compare/mobile-device-a/
参见:add_rewrite_endpoint()
创建一个新的端点,以便您可以访问任何已经存在的移动帖子类型,只需添加.../compare/mobile-device-b/
最后,它可以用来在运行中转换特定帖子的显示;i、 e.,您将查找/compare/mobile-device-b/
模板中的终结点。
<?php
add_action( \'init\', function() {
add_rewrite_endpoint( \'compare\', EP_PERMALINK );
} ); // This syntax requires PHP 5.4+.
另请参见:
WordPress Endpoint Introduction接下来,在模板的single.php
文件,该文件将负责检测/compare/mobile-device-b/
端点,并相应地调整输出。
我将提供一个快速的示例,演示如何运行子查询并通过slug提取其他设备的内容。然而,毫无疑问,您需要对其进行进一步定制,并将其融入到您的主题和总体设计目标中。
<?php
$compare = get_query_var( \'compare\' );
$compare = sanitize_key( $compare );
if ( is_singular( \'mobile\' ) && $compare ) :
$sub_query = new WP_Query( array(
\'post_type\' => \'mobile\',
\'name\' => $compare,
\'posts_per_page\' => 1,
) );
?>
<?php the_content(); // Of mobile-device-a. ?>
<?php if ( $sub_query->have_posts() ) : ?>
<?php while ( $sub_query->have_posts() ) : $sub_query->the_post(); ?>
<?php the_content(); // Of mobile-device-b. ?>
<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
<?php endif; ?>