0

私は、何千もの投稿がある複数の著者の Wordpress サイトを運営しています。良い投稿を目立たせるために、管理者のみが設定できる特定のタグでフィルターします。たとえばfeaturedfront pageなど。

著者自身がこれらのタグを選択するのを避けるために、次のスクリプトを使用します。ユーザーが禁止タグを選択した場合、公開ボタンをクリックすると削除されます。コメントは便宜上のものです:

add_action('save_post', 'remove_tags_function', 10, 1); //whenever a post is saved, run the below function

function remove_tags_function( $post_id ){
    if(!current_user_can('manage_options')){ // if the logged in user cannot manage options (only admin can)
        $post_tags = wp_get_post_terms( $post_id, 'post_tag', array( 'fields'=>'names' ) ); //grab all assigned post tags
        $pos = array_search( 'tag-to-be-deleted', $post_tags ); //check for the prohibited tag
        if( false !== $pos ) { //if found
            unset( $post_tags[$pos] ); //unset the tag
            wp_set_post_terms ($post_id, $post_tags, 'post_tag'); //override the posts tags with all prior tags, excluding the tag we just unset
        }
    }//end if. If the current user CAN manage options, the above lines will be skipped, and the tag will remain
}

このソリューションには大きな問題があります。投稿が公開されると、管理者はfeaturedタグを付けますが、元の作成者が投稿を更新すると、タグは消えます。問題を理解していますか?

多くの著者は、特にコメントでフィードバックを受け取ったときに、自分の投稿を修正することを好みます。また、頻繁に更新する必要があるニュース関連の投稿もあります。

このシナリオを解決するために、どのようなソリューションを提案できますか? 管理者は注目のタグを付けることができる必要があり、作成者が投稿を更新した場合、タグはそのままにしておく必要があります。なんというパズル…

4

2 に答える 2

0

ユーザーが追加したタグと管理者が追加したタグを区別して、別々に処理する必要があります。タグにフラグ列を追加するか、ユーザーと管理者からのタグを別のテーブルに保持します。

于 2012-09-17T15:53:47.530 に答える
0

管理プロパティにはタグをまったく使用しないことをお勧めします。本質的に、あなたがしようとしているのは、特定の投稿に特定の属性を付けることだけです。

このために、カスタム分類法を使用することをお勧めします。

リンクされた記事、特に「タクソノミーにラベルを使用する」セクションを参照して、タグ システムから完全に分離しておくことができる、属性のカスタム処理を追加する方法についていくつかのアイデアを提供してください。

リンク

于 2012-09-17T16:02:34.607 に答える