如何让来自Facebook的WordPress链接得到充分评估

时间:2012-07-30 作者:miah

The short version:

从Facebook到页面的任何链接都会在wordpress安装中的“硬编码页面”处停止计算,忽略URL的其余部分。它不允许使用我编写的快捷代码,该代码自动为外部表中的任何不动产列表生成页面上的内容。

The Long Version

我创建了一个wordpress插件,它可以显示外部数据库中的内容(房地产清单),并按预期工作。我使用短代码在单个页面上显示任何单个列表,即:http://www.lbjrealestate.com/property/Horseshoe-Bay/Horseshoe-Bay-P/1104-unit-3-The-Cape/119526/

这一切都非常有效,直到你试图从facebook上发布一个指向该房产的链接。FB只在wordpress中存在的页面之前评估上述链接(http://www.lbjrealestate.com/property/)这会导致标题为“没有与mls编号匹配的属性”,正如您所料,这是一个问题。(旁白:谷歌+处理链接很好)

其他可能相关的信息:我没有使用自定义的帖子类型,而是创建了一个带有短代码的页面。

这是插件的初始化部分,我缺少什么?

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;
        }

        ...

}

1 个回复
最合适的回答,由SO网友:Milo 整理而成

问题是canonical url 在所有这些页面上http://www.lbjrealestate.com/property/. 您需要为页面生成自定义规范链接,或者提供og:url tag 供Facebook阅读。在中输入您的urlthe debugger 看看Facebook看到了什么。

结束

相关推荐

如何指定用户从Facebook注销后要重定向到的URL?

我需要指定一个url,在用户从facebook注销后,我将使用该url,因为我需要做一些额外的清理,并且他正确地从我们的应用程序注销。为此,我需要一个url,当调用它时,它将调用我定义的函数,但我不知道应该如何做,应该使用什么操作。在Drupal中,我可以定义一个“回调菜单”,这正是我想要的,我不知道如何在wordpress中实现这一点。编辑-为了澄清更多信息,用户通过facebook connect连接到我的插件。标准$logout_url = $facebook->getLogoutUrl();