のぶのぶさん、お世話になります。wordpressを大変便利に使わせていただいています。先日は適切なアドバイスで助けていただき、ありがとうございました。もう一点教えてください。メンバーが担当者が投稿したものを、管理者又はそれなりの権限を持った人が承認して公開するような運用をwordpressでしたいと考えています。そこで質問です。コメントのことではなくて、新規投稿のことです。1ユーザAが投稿時に投稿ボタンを押しても即座に公開はされずに、管理者又は高度な権限を持つユーザBが許可を与えれば公開されるような仕様になれば、うれしいです。ユーザAの投稿が投稿申請のような形で、管理ユーザBにメール等で連絡が入るというのも、できるとうれしいです。これらは、質問というより要望ですね。2)現状のものを利用すると考えて、ユーザAが下書きとして保存したものを、同じユーザーレベルもしくはさらに高度なユーザレベルのユーザBが、編集したり、公開したりするようにできませんでしょうか。バグ情報にあがっていた中ににたようなものがあったと思いますが、逆にこのような機能がありがたいです。どこかを書き換えて実現できるものでしたら、教えてください。
引用:yssuhogeさんは書きました:のぶのぶさん、お世話になります。wordpressを大変便利に使わせていただいています。先日は適切なアドバイスで助けていただき、ありがとうございました。もう一点教えてください。メンバーが担当者が投稿したものを、管理者又はそれなりの権限を持った人が承認して公開するような運用をwordpressでしたいと考えています。そこで質問です。コメントのことではなくて、新規投稿のことです。1ユーザAが投稿時に投稿ボタンを押しても即座に公開はされずに、管理者又は高度な権限を持つユーザBが許可を与えれば公開されるような仕様になれば、うれしいです。ユーザAの投稿が投稿申請のような形で、管理ユーザBにメール等で連絡が入るというのも、できるとうれしいです。これらは、質問というより要望ですね。2)現状のものを利用すると考えて、ユーザAが下書きとして保存したものを、同じユーザーレベルもしくはさらに高度なユーザレベルのユーザBが、編集したり、公開したりするようにできませんでしょうか。バグ情報にあがっていた中ににたようなものがあったと思いますが、逆にこのような機能がありがたいです。どこかを書き換えて実現できるものでしたら、教えてください。承認機能については、要望事項として小生の頭の中にメモしておきます。ユーザーレベルの高低の比較によって下書きを編集可能にするには、最新のパッチが適用されている事が前提となりますが、wp-admin/edit.phpの53行目および、wp-admin/post.phpの678行目の $drafts = $wpdb->get_results("SELECT ID, post_title FROM {$wpdb->posts[$wp_id]} WHERE post_status = 'draft' AND post_author = $user_ID"); if ($drafts) { ?> <div class="wrap"> <p><strong><?php echo _LANG_P_YOUR_DRAFTS; ?></strong> <?php $i = 0; foreach ($drafts as $draft) { if (0 != $i) echo ', '; $draft->post_title = stripslashes($draft->post_title); if ($draft->post_title == '') $draft->post_title = 'Post #'.$draft->ID; echo "<a href='post.php?action=edit&post=$draft->ID' title='Edit this draft'>$draft->post_title</a>"; ++$i; } ?>.</p> </div> <?php } を $drafts = $wpdb->get_results("SELECT ID, post_title, post_author FROM {$wpdb->posts[$wp_id]} WHERE post_status = 'draft'"); if ($drafts) { ?> <div class="wrap"> <p><strong><?php echo _LANG_P_YOUR_DRAFTS; ?></strong> <?php $i = 0; foreach ($drafts as $draft) { $draft_author = get_userdata($draft->post_author); if (user_can_edit($draft->post_author)) { if (0 != $i) echo ', '; $draft->post_title = stripslashes($draft->post_title); if ($draft->post_title == '') $draft->post_title = 'Post #'.$draft->ID; echo "<a href='post.php?action=edit&post=$draft->ID' title='Edit this draft'>$draft->post_title"."[by ".$draft_author->user_login." ]</a>"; ++$i; } } ?>.</p> </div> <?php } に変更すれば良いと思います。で、wp-admin/edit-form.phpおよびwp-admin/edit-form-advanced.php中で、[code <input name="publish" type="submit" id="publish" tabindex="6" value="<?php echo _LANG_EF_AD_PUBLISH; ?>" /> [/code]という行を、 <?php if ($user_level <= 1) { ?> <input name="publish" type="submit" id="publish" tabindex="6" value="<?php echo _LANG_EF_AD_PUBLISH; ?>" /> <?php } ?> というようにしてやれば、user_levelが1のユーザで「書き出し」ボタンを非表示に出来ると思います。(wp-admin/edit-form.phpおよびwp-admin/edit-form-advanced.phpではtabindex=のぶぶんの数字が異なります)但し、次のリリースでは、このあたりのソースはほとんど変わってしまうので、0.3.3でのみ有効になります。
yssuhogeさんは書きました:のぶのぶさん、お世話になります。wordpressを大変便利に使わせていただいています。先日は適切なアドバイスで助けていただき、ありがとうございました。もう一点教えてください。メンバーが担当者が投稿したものを、管理者又はそれなりの権限を持った人が承認して公開するような運用をwordpressでしたいと考えています。そこで質問です。コメントのことではなくて、新規投稿のことです。1ユーザAが投稿時に投稿ボタンを押しても即座に公開はされずに、管理者又は高度な権限を持つユーザBが許可を与えれば公開されるような仕様になれば、うれしいです。ユーザAの投稿が投稿申請のような形で、管理ユーザBにメール等で連絡が入るというのも、できるとうれしいです。これらは、質問というより要望ですね。2)現状のものを利用すると考えて、ユーザAが下書きとして保存したものを、同じユーザーレベルもしくはさらに高度なユーザレベルのユーザBが、編集したり、公開したりするようにできませんでしょうか。バグ情報にあがっていた中ににたようなものがあったと思いますが、逆にこのような機能がありがたいです。どこかを書き換えて実現できるものでしたら、教えてください。
$drafts = $wpdb->get_results("SELECT ID, post_title FROM {$wpdb->posts[$wp_id]} WHERE post_status = 'draft' AND post_author = $user_ID"); if ($drafts) { ?> <div class="wrap"> <p><strong><?php echo _LANG_P_YOUR_DRAFTS; ?></strong> <?php $i = 0; foreach ($drafts as $draft) { if (0 != $i) echo ', '; $draft->post_title = stripslashes($draft->post_title); if ($draft->post_title == '') $draft->post_title = 'Post #'.$draft->ID; echo "<a href='post.php?action=edit&post=$draft->ID' title='Edit this draft'>$draft->post_title</a>"; ++$i; } ?>.</p> </div> <?php }
$drafts = $wpdb->get_results("SELECT ID, post_title, post_author FROM {$wpdb->posts[$wp_id]} WHERE post_status = 'draft'"); if ($drafts) { ?> <div class="wrap"> <p><strong><?php echo _LANG_P_YOUR_DRAFTS; ?></strong> <?php $i = 0; foreach ($drafts as $draft) { $draft_author = get_userdata($draft->post_author); if (user_can_edit($draft->post_author)) { if (0 != $i) echo ', '; $draft->post_title = stripslashes($draft->post_title); if ($draft->post_title == '') $draft->post_title = 'Post #'.$draft->ID; echo "<a href='post.php?action=edit&post=$draft->ID' title='Edit this draft'>$draft->post_title"."[by ".$draft_author->user_login." ]</a>"; ++$i; } } ?>.</p> </div> <?php }
<?php if ($user_level <= 1) { ?> <input name="publish" type="submit" id="publish" tabindex="6" value="<?php echo _LANG_EF_AD_PUBLISH; ?>" /> <?php } ?>
のぶのぶさん、連休中にもかかわらず早速に対応してくださり、ありがとうございます。ユーザレベルで下書き編集の可否ができるようになりました。思っていたように運用できます。また、書き出しボタン非表示についても考えてくださりありがとうございます。ところが、wp-admin/edit-form.phpおよびwp-admin/edit-form-advanced.php中で、記述を変更してみたのですが、ユーザレベルに関わらず、書き出しボタンが常に非表示になってしまいます。どの点を、見直せばよいのかご教授ください。
引用:yssuhogeさんは書きました:ところが、wp-admin/edit-form.phpおよびwp-admin/edit-form-advanced.php中で、記述を変更してみたのですが、ユーザレベルに関わらず、書き出しボタンが常に非表示になってしまいます。どの点を、見直せばよいのかご教授ください。すみません、比較が逆でした。 <?php if ($user_level > 1) { ?> <input name="publish" type="submit" id="publish" tabindex="6" value="<?php echo _LANG_EF_AD_PUBLISH; ?>" /> <?php } ?> が正解です。
yssuhogeさんは書きました:ところが、wp-admin/edit-form.phpおよびwp-admin/edit-form-advanced.php中で、記述を変更してみたのですが、ユーザレベルに関わらず、書き出しボタンが常に非表示になってしまいます。どの点を、見直せばよいのかご教授ください。
<?php if ($user_level > 1) { ?> <input name="publish" type="submit" id="publish" tabindex="6" value="<?php echo _LANG_EF_AD_PUBLISH; ?>" /> <?php } ?>
のぶのぶさん、ありがとうございました。おかげで、思ったような運用ができます。私がよく見て考えて気づくべきでしたね。お手数をおかけしました。感謝申し上げます。
このプログラムは KENT 氏の yybbs を xoops(PHP) に移植したものです - KENT -