web-dev-qa-db-fra.com

Types de messages personnalisés - Numéro RSS lastBuildDate

J'utilise CMS Press pour des types de publication personnalisés. Le problème est que le flux ne se valide pas car lastBuildDate est vide. Je n'utilise pas les publications par défaut de WordPress pour quoi que ce soit et cela cause le problème.

J'ai fait un post test en utilisant le post par défaut de WordPress et voila lastBuildDate a été renseigné et le flux validé.

Dès que j'ai supprimé le message, il a supprimé la date dans lastBuildDate et le flux n'a pas été validé.

J'utilise le code ci-dessous pour ajouter les types de publication personnalisés dans le flux principal, mais il s'agit également d'un problème lié aux flux créés par les types de publication personnalisés.

Me manque-t-il quelque chose pour que le lastBuildDate soit peuplé?

if ( ( is_front_page() && false == $query->query_vars['suppress_filters'] ) || is_feed() ){
        $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
        query_posts( array('post_type'=>array('post', 'games', 'entertainment', 'tech', 'podcasts'),'paged'=>$paged ) );
} 

J'ai répondu à ma propre question ci-dessous.

1
kel

C’est la solution que j’ai trouvée à partir de la réponse de @Rarst. Mettez cela dans les themes functions.php et cela a fonctionné à merveille!

add_filter('get_lastpostmodified', 'my_lastpostmodified');
function my_lastpostmodified()
{
    global $wpdb;
    $add_seconds_server = date('Z');
    return $wpdb->get_var("SELECT  DATE_ADD(post_modified_gmt, INTERVAL '$add_seconds_server' SECOND) FROM $wpdb->posts WHERE post_status = 'publish' ORDER  BY post_modified_gmt DESC LIMIT 1");
} 
2
kel

Utiliser la fonctionnalité WordPress


La fonction get_lastpostmodified() est abondamment documentée. La documentation de wordpress indique que la fonction accepte un fuseau horaire et un post_type.

Documentation

À partir de WordPress Trac: wp-includes/post.php1

5355     * @param string $post_type Optional. The post type to check. Default 'any'.
5356     * @return string The timestamp.
5357     */
5358    function get_lastpostmodified( $timezone = 'server', $post_type = 'any' ) {

Exemples:

Si vous voulez vérifier le dernier message modifié d'un type de message particulier (disons 'JEUX'). Vous appelez la fonction comme suit:

get_lastpostmodified('GMT', 'Games');


Ci-après, un exemple de mon flux personnalisé destiné à un site d'emploi populaire. Ici, j'utilise un type de message personnalisé (CPT) appelé 'EMPLOI':

// ...
<lastBuildDate><?php echo mysql2date('D, d M Y H:i:s', get_lastpostmodified('GMT', 'job'), false); ?> GMT</lastBuildDate><pre>
// ...


Sources:

1 https://core.trac.wordpress.org/browser/tags/4.4.1/src/wp-includes/post.php

2
Kemal San

lastBuildDate est en train d'être rempli avec les données renvoyées par get_lastpostmodified() . Qui ne vérifie que le type post natif, donc si vous n'en avez pas - il n'y a pas de date trouvée.

Filtrez le crochet get_lastpostmodified pour renvoyer une autre date de construction (au format MySQL DATETIME) à la place.

0
Rarst