J'essaie d'intégrer un type de message personnalisé à curseur dans WordPress et je n'arrive pas à définir l'ordre (orderby: ID, order: ASC) pour ce type de message personnalisé.
J'ai ajouté la fonction supports => array('title','page-attributes'),
au type d'article, mais lorsque je modifie l'attribut d'ordre d'une diapositive, l'ordre ne change pas (ni sur le back-end ni sur le front-end).
Ceci est le functions.php (il donne aussi cette erreur: Notice: Undefined index: post_type in .../functions.php on line 105
)
function set_custom_post_types_admin_order($wp_query) {
$post_type = $wp_query->query['post_type']; // line 105
if ( $post_type == 'bxslider') {
$wp_query->set('orderby', 'ID');
$wp_query->set('order', 'ASC');
}
}
add_filter('pre_get_posts', 'set_custom_post_types_admin_order');
Et c'est le bxslider.php
<?php
// Create Slider
function hostify_bxslider_template() {
// Query Arguments
$args = array(
'post_type' => 'bxslider',
'orderby' => 'ID',
'order' => 'ASC',
'posts_per_page' => -1
);
// The Query
$the_query = new WP_Query( $args );
// Check if the Query returns any posts
if ( $the_query->have_posts() ) {
// Start the Slider ?>
<div id="slider">
<?php
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<div>
<div class="slide">
<?php // Check if there's a BxSlider h2 given and if so post it
if ( get_post_meta( get_the_id(), 'bxslide_metabox_h2', true) != '' ) { ?>
<h2><?php echo get_post_meta( get_the_id(), 'bxslide_metabox_h2', true); ?></h2>
<?php } ?>
<?php // Check if there's a BxSlider h1 given and if so post it
if ( get_post_meta( get_the_id(), 'bxslide_metabox_h1', true) != '' ) { ?>
<h1><?php echo get_post_meta( get_the_id(), 'bxslide_metabox_h1', true); ?></h1>
<?php } ?>
<?php // Check if there's a BxSlider paragraph given and if so post it
if ( get_post_meta( get_the_id(), 'bxslide_metabox_text', true) != '' ) { ?>
<p><?php echo get_post_meta( get_the_id(), 'bxslide_metabox_text', true); ?></p>
<?php }
// Check if there's a BxSlider button link or button name given and if so post it
if ( get_post_meta( get_the_id(), 'bxslide_metabox_link', true) != '' || get_post_meta( get_the_id(), 'bxslide_metabox_name', true) != '' ) { ?>
<a href="<?php echo esc_url( get_post_meta( get_the_id(), 'bxslide_metabox_link', true) ); ?>" class="button2"><?php echo get_post_meta( get_the_id(), 'bxslide_metabox_name', true); ?></a>
<?php } ?>
<div class="clear"></div><br />
</div>
</div>
<?php endwhile; } ?>
</div>
<?php
// Reset Post Data
wp_reset_postdata();
}
?>
P.S. Le curseur fonctionne très bien, je ne peux tout simplement pas changer l'ordre des diapositives.
Comme @Pat l'a dit, pre_get_posts est un crochet d'action, cela ne fonctionnera pas de cette façon. Mais vous n'avez pas besoin d'utiliser le hook pre_get_posts dans functions.php. Supprimez ces fonctions et filtrez du fichier de fonctions et utilisez ces arguments dans WP_Query. orderby au lieu de ID, utilisez menu_order.
$args = array(
'post_type' => 'bxslider',
'orderby' => 'menu_order',
'order' => 'ASC',
'posts_per_page' => -1,
'ignore_sticky_posts' => 1,
);