默认情况下,您无法执行此操作,但可以在主题中编写查询来执行此操作。允许在URL中输入任何字段都可能存在安全风险,因此您需要显式检测所需的字段。
在您的functions.php
, 您可以添加以下内容(未测试!):
add_action( \'pre_get_posts\', \'wpse230535_custom_posts_by_custom_field\' );
function wpse230535_custom_posts_by_custom_field( $query ) {
if( !is_admin() && $query->is_main_query() ) {
$acceptable_fields = array( \'custom-field-1\', \'custom-field-2\' );
$meta_query = array();
foreach( $acceptable_fields as $field ) {
if ( ! isset( $_GET[$field] ) ) { continue; }
$meta_query[] = array (
\'key\' => $field,
\'value\' => sanitize_text_field( $_GET[$field] ),
\'compare\' => \'=\',
);
} // end foreach
if( count( $meta_query ) ) { $query->set( \'meta_query\', $meta_query ); }
} // end if
} // end function
这将获取您当前允许的自定义字段
custom-field-1
和
custom-field-2
, 检查是否在查询字符串中设置了它们(通过
$_GET[]
superglobal), 如果是这样的话,
sanitize them 并将其添加到
meta query.
当然,您需要将允许的字段名替换为所需的字段名。例如,当一个人访问http://www.example.com/?custom-field-1=fieldvalue
, 仅显示具有名为custom-field-1
, 精确值为fieldvalue
. 您可以添加任意数量的字段。
有关按自定义字段进行查询的更多参考,请参见WP Meta Query documentation. 希望这有帮助!