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