我的循环显示特色帖子,然后按时间倒序显示帖子。
但是当我使用<?php echo get_previous_post(); ?>
它按相反的时间顺序抓取帖子。
如何向上一个post函数添加过滤器,类似于this 而是通过如下数组进行过滤:\'orderby\' => array( \'meta_value\' =>
\'DESC\', \'date\' => \'DESC\')
?
<小时/>Code:
<小时>UPDATE: 已清理索引。来自@sMyles和@JackJohansson的帮助后的php循环
索引。php循环:
$args = array(
\'posts_per_page\' => - 1,
\'meta_key\' => \'meta-checkbox\',
\'orderby\' => array( \'meta_value\' => \'DESC\', \'date\' => \'DESC\')
);
$posts = new WP_Query( $args );
if($posts->have_posts() ){
while( $posts->have_posts() ){
$posts->the_post();
// Set to content template by default
$template = \'content\';
// Change template to featured when `is_featured` meta has a value
if(get_post_meta(get_the_ID(), \'meta-checkbox\', \'yes\')){
$template = \'featured\';
}
// Load template part
get_template_part( $template, get_post_format() );
}
}
<小时>
UPDATE: 根据建议,我添加了使用前一个post函数的位置
上一个Post功能
<div id="next-post">
<?php $prev_post = get_previous_post();
if(!empty($prev_post)) {
echo \'<a class="next-story" href="\' . get_permalink($prev_post->ID) . \'">Next Story</a>\';
echo \'<a class="next-story-title" href="\' . get_permalink($prev_post->ID) . \'" title="\' . $prev_post->post_title . \'">\' . $prev_post->post_title . \'</a>\';
} ?>
</div>
特色帖子功能:
function sm_custom_meta() {
add_meta_box( \'sm_meta\', __( \'Featured Posts\', \'sm-textdomain\' ), \'sm_meta_callback\', \'post\' );
}
function sm_meta_callback( $post ) {
$featured = get_post_meta( $post->ID );
?>
<p>
<div class="sm-row-content">
<label for="meta-checkbox">
<input type="checkbox" name="meta-checkbox" id="meta-checkbox" value="yes" <?php if ( isset ( $featured[\'meta-checkbox\'] ) ) checked( $featured[\'meta-checkbox\'][0], \'yes\' ); ?> />
<?php _e( \'Featured this post\', \'sm-textdomain\' )?>
</label>
</div>
</p>
<?php
}
add_action( \'add_meta_boxes\', \'sm_custom_meta\' );
function sm_meta_save( $post_id ) {
// Checks save status
$is_autosave = wp_is_post_autosave( $post_id );
$is_revision = wp_is_post_revision( $post_id );
$is_valid_nonce = ( isset( $_POST[ \'sm_nonce\' ] ) && wp_verify_nonce( $_POST[ \'sm_nonce\' ], basename( __FILE__ ) ) ) ? \'true\' : \'false\';
// Exits script depending on save status
if ( $is_autosave || $is_revision || !$is_valid_nonce ) {
return;
}
// Checks for input and saves
if( isset( $_POST[ \'meta-checkbox\' ] ) ) {
update_post_meta( $post_id, \'meta-checkbox\', \'yes\' );
} else {
update_post_meta( $post_id, \'meta-checkbox\', \'\' );
}
}
add_action( \'save_post\', \'sm_meta_save\' );