如何使 wordpress 功能仅适用于单个页面而不适用于页面

How to make wordpress function working only on single & NOT for pages

我正在努力解决一件事。我有这样的 wordpress 功能:

   function wpq_insert_attachment_data($data, $postarr){
if (!is_single() ) {
    $posttitle = get_the_title( $postarr['post_parent'] );
    $data['post_title'] = $posttitle;
    $data['post_name'] = $posttitle;    
    return $data;        
}}  

add_filter( 'wp_insert_attachment_data', 'wpq_insert_attachment_data', 10, 2 );

它工作得很好,但它涵盖了所有 single/custom post type/pages 等。有什么方法可以从该功能中排除页面吗?我试过用 is_single() 解决它,但没有成功。

仅在特定页面上加载该功能,在 is_page(id_here) 中添加您的页面 ID :

 function wpq_insert_attachment_data($data, $postarr){
     if ( is_page(page_id)){
       $posttitle = get_the_title( $postarr['post_parent'] );
        $data['post_title'] = $posttitle;
        $data['post_name'] = $posttitle;    
        return $data;  
    }
 }

 add_filter( 'wp_insert_attachment_data', 'wpq_insert_attachment_data', 10, 2 );

您还可以添加您的页面 slug 而不是 id,例如:

if ( is_page('slug'))

或排除页面

if ( !is_page('slug'))

if ( !is_page(array('slug-1', 'slug-2') )

看来您只需要调整您的条件语句:

if (!is_single() ) {

应该变成:

if (!is_page() ) {

在您的语句中使用 is_singular 来定位特定的 post 类型。

也可以做一个数组来包含或排除。

If  (! is_singular()) ..... or.....
 (! is_singular(array('page','food',foo')))

然后它只会 运行 单曲,无论您定位的 post 类型。