如何关闭页面的评论,而不是帖子?

时间:2012-08-26 作者:Casebash

我希望我的页面在默认情况下没有启用评论,只有我的帖子。这可能吗?

3 个回复
SO网友:kaiser

前端解决方案:

欺骗你的模板

你可以假装评论对特定的帖子类型开放。以下代码适用于所有模板,这些模板将注释表单(或任何与注释相关的代码/UI元素)包装在条件comments_open() 检查

小魔术;包裹在一个快速的小插件中。

/**
 * Plugin Name: Disable comments for post types
 * Author: Kaiser
 * Author URl: http://unserkaiser.com
 */

/**
 * Set comments open to FALSE for specific post types
 * 
 * @param  bool $open
 * @param  int  $post_id
 * @return bool $open
 */
function wpse63098_diable_comments( $open, $post_id )
{
    if ( ! $open )
        return $open;

    $curr_post = get_post( $post_id );
    if ( in_array(
         $curr_post->post_type
        ,array(
            \'page\'
            // Add other (custom) post types here
         )
    ) )
        return FALSE;

    return $open;
}
add_filter( \'comments_open\', \'wpse63098_diable_comments\', 20, 2 );
如何使用它只需在管理中上传并启用插件即可。现在,每次模板提问时,都会出现如下问题:;

if ( comments_open() )
{
    // show comment form or whatever
}
…这个comment_open() 函数被截获并发出FALSE 对于您的帖子类型(例如页面)。然后它简单地跳过包装在其中的内容,不显示注释。

SO网友:kaiser

后端解决方案:


Javascript在打开“讨论”元框时,将默认值设置为未选中,然后两个复选框(注释和Pingbacks)都将设置为来自…

管理UI»设置»讨论»讨论设置»默认文章设置»“所有对新文章发表评论的人”

一个更改默认值的插件,因为我们不能简单地为不同的帖子类型设置不同的值,所以我们可以依赖javascript(如果关闭JS,这将不起作用,例如在屏幕阅读器中)。

现在,元框提供了一个钩子,我们可以在其中添加这个小javascript片段。

 <?php
 /**
 * Plugin Name: Uncheck comments for post types
 * Author: Kaiser
 * Author URl: http://unserkaiser.com
 */

/**
 * Uncheck ping/comments open status checkboxes for specific post types
 * 
 * @param  object $post
 * @return void
 */

function wpse63098_disable_comments_cb( $post )
{
    if ( ! in_array( 
         $post->post_type
        ,array(
            \'page\'
            // Add other (custom) post types here
         )
    ))
        return;
    ?>
    <script type="text/javascript">
    jQuery( document ).ready( function($) )
    {
        // Comments
        if ( $( \'#comment_status\' ).is( \':checked\' ) )
            $( \'#comment_status\' ).attr( \'checked\', false );

        // Pings
        if ( $( \'#ping_status\' ).is( \':checked\' ) )
            $( \'#ping_status\' ).attr( \'checked\', false );
    }
    </script>
    <?php
}
add_action( \'post_comment_status_meta_box-options\', \'wpse63098_disable_comments_cb\' );

SO网友:Damien

您可能只需要显示小部件以供讨论。

enter image description here

1转到编辑页面,然后选择屏幕选项
3选中讨论框
4。关闭/隐藏屏幕选项。向下滚动页面,您将看到新的讨论窗口6。取消选中“允许评论”

[编辑…我本打算在此处显示另一幅图像…但突然上传失败]

结束

相关推荐

Get_Pages不接受我的查询

我希望有人能指出我的错误。我在函数中有一个函数。带有简单meta\\u查询的php。如果我使用此查询。$args = array( \'meta_query\' => array( array( \'meta_key\' => \'Partner_Level\', \'meta_value\' => \'Gold\', \'post_type\' => \'page\', \'post_status\' =