一般信息
我使用插件WP-Types(WP-Types.com)创建了一个名为
artist“
在WP类型中,您还可以将另一个帖子类型设置为父帖子类型。默认情况下,这是不可能的;他们通过一个元查询实现了此功能,该查询的关键字为:”
“\\u wpcf\\u beliens\\u%POSTTYPE%\\u id”(在我的示例中)”
_wpcf_belongs_artist_id“)
并且该值是父帖子的ID。
问题
通常,如果将页X设置为页Y的子页,则会有以下永久链接结构:
/page-Y/page-X/
我以为这个插件会采用这个,但它没有。例如,我使用“painting“使用ID24 作为父页和“picasso“使用ID72 作为子贴子,贴子类型为“艺术家”。所以这个:
/绘画/毕加索/
确实将我重定向到:
/艺术家/毕加索/
但输出了正确的内容。
我的解决方案越来越接近,因为付费支持无法帮助我,我必须自己尝试。为了编写自己的“自定义”重写规则,我首先必须知道正确的查询。我尝试手动获取我的内容:
指数php_wpcf\\u归属\\u艺术家\\u id=24(&;艺术家=毕加索将我重定向到:
/艺术家/毕加索_wpcf\\u归属\\u艺术家\\u id=24(&;艺术家=毕加索(picasso)
具有单个艺术家帖子的正确输出。
此:
索引。php_wpcf\\u beliens\\u artist\\u id=24只输出我的头版。
唯一或多或少的变化是:
/绘画/毕加索/?艺术家=毕加索_wpcf\\u属于\\u艺术家\\u id=24和:
/绘画/毕加索/?艺术家=毕加索这些不会将我重定向到/艺术家/毕加索/…或任何地方,但会输出正确的单个艺术家帖子。
Here 您可以在WP类型的支持论坛中找到更多变体和整个线程。
第一步可能是使用类似“parent\\u id”的queryvar获取正确的内容。之后,我可以开始处理重写规则本身,可能会出现问题,因为顶级(%pagename%和%parent\\u id%)的双重使用。这可能会混淆WordPress。
2017年12月更新我尝试了这段代码,以获取所有带有元字段“\\u wpcf\\u beliens\\u artist\\u id”和从URL检索到的元值(/?parent\\u id=24)的帖子。不幸的是,它似乎不起作用。它使我的子菜单的辅助查询崩溃,只输出正常查询的结果。
add_filter(\'query_vars\', \'custom_query_vars\');
function custom_query_vars($vars) {
$vars[] = \'parent_id\';
return $vars;
}
function parent_query( $query ) {
// Exclude
if( $query->is_admin == 1 && !$query->is_main_query() && !$query->is_archive == 1 ) {
return;
}
// retrieve field name / value from URL if exist
$custom_field = \'_wpcf_belongs_artist_id\';
$custom_value = ( $_GET[\'parent_id\'] ) ? stripslashes( $_GET[\'parent_id\'] ) : \'\';
if( $custom_field ) {
// add meta key requirement -- we’ll return all posts with some ‘color’
$query->set( \'meta_key\', \'_wpcf_belongs_artist_id\' );
if( $custom_value ) {
// build meta value requirement -- we’ll return only blue
$query->set( \'meta_value\', $custom_value );
}
}
}
add_action( \'pre_get_posts\', \'parent_query\' );