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.
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");
}
La fonction get_lastpostmodified()
est abondamment documentée. La documentation de wordpress indique que la fonction accepte un fuseau horaire et un post_type.
À 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' ) {
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>
// ...
1 https://core.trac.wordpress.org/browser/tags/4.4.1/src/wp-includes/post.php
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.