web-dev-qa-db-fra.com

Comment obtenir un lien wordpress pour évaluer pleinement le fait de venir de facebook

La version courte:

Tout lien de Facebook vers une page cesse d’évaluer la "page codée en dur" dans l’installation de wordpress press, en ignorant les parties restantes de l’URL. Cela n'autorise pas le shortcode que j'ai écrit, qui génère automatiquement le contenu d'une page pour une liste immobilière dans une table externe, à évaluer.

La version longue

J'ai créé un plugin wordpress qui affiche le contenu (annonces immobilières) à partir d'une base de données externe, qui fonctionne comme prévu. J'utilise un shortcode pour afficher n'importe quelle liste individuelle sur une seule page, par exemple: http://www.lbjrealestate.com/property/Horseshoe-Bay/Horseshoe-Bay-P/1104- unit-3-The-Cape/119526/

Tout cela fonctionne de façon spectaculaire, jusqu'à ce que vous essayiez de poster un lien vers la propriété à partir de Facebook. FB évalue le lien ci-dessus uniquement jusqu'à la page existante dans wordpress (http://www.lbjrealestate.com/property/), ce qui rend ensuite le titre "Aucune propriété ne correspond à ce nombre", et comme vous pouvez vous en attendre, c'est un problème. (à part: google + gère très bien le lien)

Autres informations potentiellement pertinentes: je n'utilise pas de type de publication personnalisé, mais une page comportant un code court.

Voici la partie initialisation du plugin, que me manque-t-il?

class property_search {
        static $add_script;

        static function init() {
            add_action( 'wp_loaded', array(__CLASS__, 'ps_flush_rules' ));
            add_filter( 'rewrite_rules_array', array(__CLASS__, 'ps_insert_rewrite_rules' ));
            add_filter( 'query_vars', array(__CLASS__, 'ps_insert_query_vars' ));

            add_filter( 'the_title', 'do_shortcode' );
            add_filter( 'wp_title', 'do_shortcode' );

            add_shortcode('show_property', array(__CLASS__, 'property_shortcode'));
            add_shortcode('property_title', array(__CLASS__, 'property_title_shortcode'));
        }

        static function ps_flush_rules() {
            $rules = get_option( 'rewrite_rules' );

            if ( ! isset( $rules['(property)/(.+)$'] ) || ! isset( $rules['(properties)/(.+)$'] ) ) {
                global $wp_rewrite;
                $wp_rewrite->flush_rules();
            }
        }

        static function ps_insert_rewrite_rules( $rules ) {
            $newrules = array();
            $newrules['(property)/(.+)$'] = 'index.php?pagename=$matches[1]&property=$matches[2]';
            $newrules['(properties)/(.+)$'] = 'index.php?pagename=$matches[1]&geolocation=$matches[2]';
            return $newrules + $rules;
        }

        static function ps_insert_query_vars( $vars ) {
            array_Push($vars, 'property');
            array_Push($vars, 'geolocation');
            return $vars;
        }

        ...

}
2
miah

Le problème est que l'URL canonique de toutes ces pages est http://www.lbjrealestate.com/property/. Vous devez soit générer un lien canonique personnalisé pour vos pages, soit fournir une balise og: url à lire par Facebook. Entrez votre URL dans le débogueur pour voir ce que Facebook voit.

2
Milo